2009-07-22 4 views
7

Как вы можете определить страну происхождения пользователей, обращающихся к вашему сайту?Как определить страну и город пользователя, обращающегося к вашему сайту?

Я пользуюсь Google Analytics на своем сайте и вижу, что у меня есть пользователи из разных регионов мира.

Но в рамках моей заявки я хотел бы предложить дополнительную настройку на основе страны и, возможно, города.

Можно ли обнаружить эту информацию из браузера? Это веб-приложение Python.

+0

Вы можете сделать вызов с помощью JQuery в https://ipdata.co API, см документацию для пример https://ipdata.co/docs.html – Jonathan

ответ

15

Grab и разархивировать http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz, установите пакет GeoIP-Python (пакет питона-Geoip, если вы в Debian или Ubuntu, в противном случае установить http://geolite.maxmind.com/download/geoip/api/python/GeoIP-Python-1.2.4.tar.gz), и сделать:

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

Просто FYI, MaxMind Precision замечательно точнее GeoLite, если вы хотите иметь лучшую точность, чем только страны. Для стран практически нет различий (в моем наборе данных 400 пар адресов-адресов из 85 стран). Недавно я изучил это как часть моей магистерской диссертации (еще не сделано, поэтому сейчас не будет ссылка на нее). – Olli

8

Получите IP-адрес посетителя и проверьте его с помощью веб-службы geolocation (или приобретите базу данных геолокации, если вы хотите провести это определение внутри компании).

+0

Люди могут быть преждевременными при маркировке решений. –

0

Макс ум стоит денег. Для свободного пока код страны только решение, которое вы можете попробовать: https://pypi.python.org/pypi/geoip2nation/

пункт установить geoip2nation

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

Смежные вопросы