2009-07-22 3 views
7

Wie können Sie das Herkunftsland der Nutzer ermitteln, die auf Ihre Website zugreifen?Wie erkennen Sie das Land und die Stadt eines Nutzers, der auf Ihre Website zugreift?

Ich verwende Google Analytics auf meiner Website und kann feststellen, dass Nutzer aus verschiedenen Regionen der Welt kommen.

Aber innerhalb meiner Anwendung möchte ich einige zusätzliche Anpassung basierend auf dem Land und vielleicht der Stadt bieten.

Ist es möglich, diese Informationen vom Browser aus zu erkennen? Dies ist eine Python-Webanwendung.

+0

geoip2nation installieren pip Sie einen Anruf mit jquery zum https://ipdata.co API machen können, finden Sie die Dokumentation für ein Beispiel https://ipdata.co/docs.html – Jonathan

Antwort

15

Zupacken und gunzip http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz, installieren Sie das GeoIP-Python-Paket (Python-geoip Paket, wenn Sie in Debian oder Ubuntu sind, sonst http://geolite.maxmind.com/download/geoip/api/python/GeoIP-Python-1.2.4.tar.gz installieren), und zu tun:

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

Die Datenbank ist frei (http://geolite.maxmind.com/download/geoip/database/LICENSE.txt). Sie verkaufen es auch; Ich denke, dass Sie nur häufigere Updates erhalten.

+3

Übrigens gibt es auch eine Datenbank nur für den Landgebrauch, die viel kleiner ist, wenn das alles ist, was Sie brauchen (http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz). Ändern Sie die Datei einfach, verwenden Sie GeoIP.GEOIP_STANDARD anstelle der obigen Flags und rufen Sie dann gi.country_code_by_name (ip) auf. –

+0

Vielen Dank für die heads-up, ich habe das Maxmind Webinterface benutzt aber nie bemerkt, dass sie vorher eine kostenlose Datenbank anbieten. –

+1

Kurz gesagt, MaxMind Precision ist wesentlich genauer als GeoLite, wenn Sie eine bessere Genauigkeit als nur Länder haben wollen. Für Länder gibt es praktisch keine Unterschiede (in meinem Datensatz sind 400 Adressen-Standortpaare aus 85 Ländern enthalten). Ich habe dies kürzlich im Rahmen meiner Masterarbeit studiert (noch nicht fertig, ich werde mich jetzt nicht darauf beziehen). – Olli

8

Holen Sie sich die IP des Besuchers und überprüfen Sie sie mit einem geolocation Web-Service (oder kaufen Sie eine Geolocation-Datenbank, wenn Sie diese Bestimmung unternehmensintern hosten möchten).

+0

Menschen können bei der Markierung von Lösungen vorschnell sein. –

0

Max Verstand kostet Geld. Für eine kostenlose noch einzige Lösung Ländercode Sie können versuchen: https://pypi.python.org/pypi/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

Es ist nicht wahr. GeoLite oder IP2Location LITE kann kostenlos verwendet werden. –

+0

Am Ende der Seite gibt es einen kommerziellen Twist: Wir bieten auch kommerzielle Lizenzierung. – Mitzi

Verwandte Themen