2009-07-22 8 views
7

Jak możesz wykryć kraj pochodzenia użytkowników uzyskujących dostęp do Twojej witryny?Jak wykrywać kraj i miasto użytkownika uzyskującego dostęp do Twojej witryny?

Używam Google Analytics w mojej witrynie i widzę, że mam użytkowników pochodzących z różnych regionów świata.

Jednak w ramach mojej aplikacji chciałbym zapewnić dodatkowe dostosowanie w zależności od kraju i być może od miasta.

Czy można wykryć tę informację z przeglądarki? To jest aplikacja internetowa Python.

+0

Można nawiązać połączenie z jQuery API https://ipdata.co, zobacz docs przykład https://ipdata.co/docs.html – Jonathan

Odpowiedz

15

Grab i gunzip http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz, należy zainstalować pakiet GeoIP-Python (pakiet python-GeoIP jeśli jesteś w Debianie lub Ubuntu, inaczej zainstalować http://geolite.maxmind.com/download/geoip/api/python/GeoIP-Python-1.2.4.tar.gz), a zrobić:

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'}

baza danych jest bezpłatna (http://geolite.maxmind.com/download/geoip/database/LICENSE.txt). Oni też to sprzedają; Myślę, że po prostu dostajesz częstsze aktualizacje.

+3

Nawiasem mówiąc, istnieje również baza danych tylko dla kraju, która jest znacznie mniejsza, jeśli to wszystko, czego potrzebujesz (http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz). Po prostu zmień plik, użyj GeoIP.GEOIP_STANDARD zamiast powyższych flag, a następnie zadzwoń gi.country_code_by_name (ip). –

+0

Dzięki za heads up użyłem interfejsu webowego maxmind, ale nigdy nie zauważyłem, że oferują one wolną bazę danych wcześniej. –

+1

Po prostu FYI, MaxMind Precision jest znacznie bardziej dokładny niż GeoLite, jeśli chcesz mieć większą dokładność niż tylko kraje. W przypadku krajów nie ma praktycznie żadnych różnic (w moim zestawie danych, 400 par adresów adresowych z 85 krajów). Niedawno przestudiowałem to jako część mojej pracy magisterskiej (jeszcze nie zrobione, więc teraz nie będzie z nią linkować). – Olli

8

Uzyskaj adres IP odwiedzającego i sprawdź go za pomocą usługi internetowej geolocation (lub kup bazę danych geolokalizacji, jeśli chcesz ją samodzielnie przeprowadzić).

+0

Ludzie pewni mogą być przedwcześnie podczas zaznaczania rozwiązań. –

0

Max umysł kosztuje pieniądze. Na wolnym jeszcze kodem kraju jedynym rozwiązaniem można spróbować: https://pypi.python.org/pypi/geoip2nation/

pip zainstalować 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

To nie jest prawda. GeoLite lub IP2Lokalizacja LITE jest bezpłatna. –

+0

W dolnej części strony znajduje się reklama handlowa: Oferujemy także licencję na redystrybucję komercyjną. – Mitzi

Powiązane problemy