2009-07-22 20 views
7

¿Cómo se puede detectar el país de origen de los usuarios que acceden a su sitio?¿Cómo detectar el país y la ciudad de un usuario que accede a su sitio?

Estoy usando Google Analytics en mi sitio y puedo ver que tengo usuarios que vienen de diferentes regiones del mundo.

Pero dentro de mi aplicación me gustaría proporcionar algunas personalizaciones adicionales basadas en el país y quizás en la ciudad.

¿Es posible detectar esta información desde el navegador? Esta es una aplicación web de Python.

+0

Se puede hacer una llamada con jQuery a la API https://ipdata.co, consulte la documentación para un ejemplo https://ipdata.co/docs.html – Jonathan

Respuesta

15

Agarrar y gunzip http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz, instalar el paquete GeoIP-Python (paquete python-geoıp si estás en Debian o Ubuntu, de lo contrario la instalación http://geolite.maxmind.com/download/geoip/api/python/GeoIP-Python-1.2.4.tar.gz), y hacer:

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

El la base de datos es gratuita (http://geolite.maxmind.com/download/geoip/database/LICENSE.txt). Ellos lo venden también; Creo que eso solo te hace actualizaciones más frecuentes.

+3

Por cierto, también hay una base de datos solo para el país que es mucho más pequeña, si eso es todo lo que necesita (http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz). Simplemente cambie el archivo, use GeoIP.GEOIP_STANDARD en lugar de los indicadores anteriores, y luego llame a gi.country_code_by_name (ip). –

+0

Gracias por el aviso, he utilizado la interfaz web de maxmind pero nunca he notado que ofrecen una base de datos gratuita antes. –

+1

Solo para FYI, MaxMind Precision es notablemente más preciso que GeoLite, si desea tener una mayor precisión que solo países. Para los países, prácticamente no hay diferencias (en mi conjunto de datos, 400 pares de dirección y ubicación de 85 países). Hace poco estudié esto como parte de mi tesis de maestría (aún no lo hice, así que no voy a vincularlo ahora). – Olli

8

Obtenga la IP del visitante y compruébelo con un servicio web geolocation (o compre una base de datos de geolocalización si desea realizar esa determinación internamente).

+0

Las personas pueden ser prematuras al marcar soluciones. –

0

La mente máxima cuesta dinero. Para un código libre embargo país única solución que puede probar: https://pypi.python.org/pypi/geoip2nation/

pip instalación 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

No es cierto. GeoLite o IP2Location LITE es gratis para su uso. –

+0

Hay un giro comercial en la parte inferior de la página: también ofrecemos licencias comerciales de redistribución. – Mitzi

Cuestiones relacionadas