2009-07-22 2 views
7

사이트에 액세스하는 사용자의 출신 국가를 어떻게 알 수 있습니까?사이트에 액세스하는 사용자의 국가와 도시를 감지하는 방법은 무엇입니까?

내 사이트에서 Google 웹 로그 분석을 사용하고 있으며 전 세계 다른 지역에서 온 사용자가 있음을 알 수 있습니다.

그러나 내 신청서에서는 국가 및 도시에 따라 몇 가지 추가 맞춤 설정을 제공하고자합니다.

브라우저에서이 정보를 감지 할 수 있습니까? 이것은 Python 웹 응용 프로그램입니다.

+0

geoip2nation 설치 PIP에 대한 문서를 참조하십시오 https://ipdata.co/docs.html – Jonathan

답변

15

잡아와 http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz (데비안이나 우분투에 있다면, 그렇지 않으면 http://geolite.maxmind.com/download/geoip/api/python/GeoIP-Python-1.2.4.tar.gz를 설치, 파이썬 GeoIP가 패키지)에 GeoIP가-파이썬 패키지를 설치를 해제 (gunzip), 및 수행

import GeoIP 
gi = GeoIP.open("GeoLiteCity.dat", GeoIP.GEOIP_INDEX_CACHE | GeoIP.GEOIP_CHECK_CACHE) 
print gi.record_by_name("74.125.67.100") # a www.google.com IP 

{'city': 'Mountain View', 'region_name': 'California', 'region': 'CA', 'area_code': 650, 'time_zone': 'America/Los_Angeles', 'longitude': -122.05740356445312, 'country_code3': 'USA', 'latitude': 37.419200897216797, 'postal_code': '94043', 'dma_code': 807, 'country_code': 'US', 'country_name': 'United States'}

데이터베이스는 무료입니다 (http://geolite.maxmind.com/download/geoip/database/LICENSE.txt). 그들은 그것도 팔아 먹는다. 나는 그것이 당신에게 좀 더 빈번한 업데이트를 줄 것이라고 생각한다.

+3

그건 그렇고, 필요한 모든 것이 있으면 훨씬 더 작은 국가 별 데이터베이스도 있습니다 (http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz). 파일을 변경 한 다음 위의 플래그 대신 GeoIP.GEOIP_STANDARD를 사용하고 gi.country_code_by_name (ip)을 호출하면됩니다. –

+0

머리를 주셔서 감사합니다, 나는 maxmind 웹 인터페이스를 사용했지만 이전에 무료 데이터베이스를 제공한다는 것을 결코 알지 못했습니다. –

+1

그냥 나라보다 정확도를 높이고 싶다면 참고하시기 바랍니다. MaxMind Precision은 GeoLite보다 훨씬 정확합니다. 국가의 경우, 사실상 차이가 없습니다 (데이터 세트에서 85 개국의 400 개의 주소 - 위치 쌍). 나는 최근에 나의 석사 학위 논문의 일부로 이것을 연구했다. 아직 완성되지 않았기 때문에 지금은 그것에 링크되어 있지 않다. – Olli

8

방문자의 IP를 가져 와서 geolocation 웹 서비스 (또는 해당 결정을 사내에 호스트하려는 경우 Geolocation 데이터베이스 구입)로 확인하십시오.

+0

사례 솔루션을 표시 할 때 사람들은 시기상조 일 수 있습니다. –

0

최대 마음 비용. 무료 아직 국가 코드에 대한 이 유일한 해결책 당신은 시도 할 수 있습니다 : https://pypi.python.org/pypi/geoip2nation/

당신은 https://ipdata.co API에 jQuery로 전화를 걸 수 있습니다

from geoip import geoip 
r = geoip.GeoIp() 
r.load_memory() 
r.resolve("12.12.12.12").country_code 
#This prints : 'US' 

print r.resolve("123.44.57.4") 
#This prints : {'country': 'Korea (South)', 'host_name': '', 'country_code': 'KR'} 

r.resolve2("12.12.12.12") 
#This prints : 'US' 
+0

사실이 아닙니다. GeoLite 또는 IP2Location Lite는 무료입니다. –

+0

페이지 하단에 상업적으로 비뚤어져 있습니다. 우리는 상업적 재배포 라이센스도 제공합니다. – Mitzi

관련 문제