반응형

geoIP 추적 - geoIP 쿼리용 JSONP, 구글 태그 준비

geoIP를 수집하기 위한 작업이다. geoIP는 IP 주소와 위치 정보를 나타낸다.
해외 서비스를 이용하면 트래픽 제한으로 인해 쿼리가 안 되거나 차단될 수 있다.
그러면 본인 소유의 웹호스팅이나 웹서버를 이용해야 한다.

PHP - JSONP 생성 코드

<?php
$callback = $_GET['callback'] ?? "callback";
echo $callback . '(' . '{"ip" : "'.$_SERVER['REMOTE_ADDR'].'"}' . ')';
?>

.php 파일로 저장 후 웹서버에 업로드 한다. 파라미터는 원하는대로 꾸민다.
callback 문자열을 받는 이유는 자바스크립트에서 함수명을 중복으로 쓰지 않기 때문이다.

/api.php 또는 /api.php?callback=getIP 처럼 사용한다.

callback({"ip" : "1.2.3.4"}) // 기본

getIP({"ip" : "1.2.3.4"}) // callback 지정

쿼리 결과는 위와 같이 토해낸다. 위 내용이 <script> 코드 내에서 실행되면 자바스크립트 함수 호출로 사용되는 것이다.

위치 정보는 해외 서비스를 이용한다. iplocation.net, geoplugin.net, geolocation-db.com, ipbase.com 등의 사이트가 있다.
얻을 수 있는 정보는 ISP, 국가 코드, 국가명, 도시명, 위도, 경도 등이 있다.

<?php
echo $callback . "({
    \"ip\" : \"{$_SERVER['REMOTE_ADDR']}\",
    \"isp\" : \"{$json->isp}\",
    \"city\" : \"{$json->geoplugin_city}\",
    \"region_name\" : \"{$json->geoplugin_regionName}\",
    \"country_name\" : \"{$json->geoplugin_countryName}\",
    \"latitude\" : \"{$json->geoplugin_latitude}\",
    \"longitude\" : \"{$json->geoplugin_longitude}\"
})";
?>

IP json 코드와 마찬가지로 필요한 항목을 JSON 형식으로 만들면 된다. 또는 배열로 만들어서 json_encode() 해도 된다.

구글 태그 관리자

임의의 태그를 만들고
태그 유형은 맞춤 HTML 을 선택한다.

태그 유형

HTML 항목에 아래 코드를 붙여넣는다.

<script type="application/javascript">
function getIP(json) {
ip_addr = json.ip;
}
</script>
<script type="application/javascript" src="http://userdomain/api.php?callback=getIP"></script>

GeoIP 정보는 아래처럼...

<script type="application/javascript">
function getGeoIP(json) {
  User_IP = json.ip;
  User_ISP = json.isp;
  User_City = json.city;
  User_RegionName = json.region_name;
  User_CountryName = json.country_name;
  User_Latitude = json.latitude;
  User_Longitude = json.longitude;
}
</script>
<script type="application/javascript" src="http://yourdomain/api.php?callback=getGeoIP"></script>

 

함수 내에 사용된 자바스크립트 변수는 태그 관리자의 변수 메뉴에서 만든 전역 변수이다.

 

트리거 실행에서
트리거 유형은 페이지뷰 - DOM 사용 가능을 선택한다.

트리거 구성

나머지는 기본 설정으로 한다.

태그 목록


구글 애널리틱스

보고서 - 실시간

이벤트 이름 별 이벤트 수

글에서 이벤트 트리거로 설정한 링크를 누르면 실시간으로 집계 된다.
여기서 각 항목을 누르면 이벤트별 상세 정보가 나타난다.
User_CountryName 항목을 누르면

이벤트 이름 별 이벤트 수

어떤 값에서 얼마나 이벤트가 발생했는지 볼 수 있다.
정상 동작하는 것을 확인했다면 보고서를 만들어 본다.

 

반응형

관련글