Geolocalización con GeoIP2

El objeto GeoIP2 es una capa para la biblioteca MaxMind geoip2 Python.

Para realizar geolocalización basada en IP, el objeto GeoIP2 requiere la paqueta Python geoip2 <https://pypi.org/project/geoip2/> y los conjuntos de datos GeoIP Country y/o City en formato binario (los archivos CSV no funcionarán!), descargados desde sitios como MaxMind o DB-IP.

Además, se recomienda instalar la biblioteca C libmaxminddb, para que geoip2 pueda aprovechar la velocidad más rápida de la biblioteca C.

Ejemplo

Aquí tienes un ejemplo de su uso:

>>> from django.contrib.gis.geoip2 import GeoIP2
>>> g = GeoIP2()
>>> g.country("google.com")
{'continent_code': 'NA',
 'continent_name': 'North America',
 'country_code': 'US',
 'country_name': 'United States',
 'is_in_european_union': False}
>>> g.city("72.14.207.99")
{'accuracy_radius': 1000,
 'city': 'Mountain View',
 'continent_code': 'NA',
 'continent_name': 'North America',
 'country_code': 'US',
 'country_name': 'United States',
 'is_in_european_union': False,
 'latitude': 37.419200897216797,
 'longitude': -122.05740356445312,
 'metro_code': 807,
 'postal_code': '94043',
 'region_code': 'CA',
 'region_name': 'California',
 'time_zone': 'America/Los_Angeles',
 'dma_code': 807,
 'region': 'CA'}
>>> g.lat_lon("salon.com")
(39.0437, -77.4875)
>>> g.lon_lat("uh.edu")
(-95.4342, 29.834)
>>> g.geos("24.124.1.80").wkt
'POINT (-97 38)'

Referencia de la API

class GeoIP2(path=None, cache=0, country=None, city=None)[fuente]

El objeto GeoIP no requiere parámetros para utilizar los ajustes predeterminados. Sin embargo, al menos el ajuste GEOIP_PATH debe estar configurado con la ruta del lugar donde se encuentran tus conjuntos de datos GeoIP. Los siguientes palabras clave de inicialización pueden utilizarse para personalizar cualquier de los valores por defecto.

Palabras Clave de Inicialización

Descripción

path

Directorio base a donde se encuentra la información GeoIP o la ruta completa a donde se encuentran los archivos de datos de ciudad o país (.mmdb). Supone que tanto el conjunto de datos de ciudad como el de país se encuentran en este directorio; sobreescribe el ajuste GEOIP_PATH.

cache

Los ajustes de caché al abrir los conjuntos de datos GeoIP. Puede ser un entero en (0, 1, 2, 4, 8) que corresponda a los ajustes C API MODE_AUTO, MODE_MMAP_EXT, MODE_MMAP y GEOIP_INDEX_CACHE MODE_MEMORY, respectivamente. Por defecto es 0 (MODE_AUTO).

country

El nombre del archivo de datos país GeoIP. Por defecto es GeoLite2-Country.mmdb. Establecer esta palabra clave supera la configuración GEOIP_COUNTRY establecida.

ciudad

El nombre del archivo de datos ciudad GeoIP. Por defecto es GeoLite2-City.mmdb. Establecer esta palabra clave supera la configuración GEOIP_CITY establecida.

Métodos

Instanciando

classmethod GeoIP2.open(path, cache)[fuente]

Este método de clase instancia el objeto GeoIP a partir del camino de la base de datos y la configuración de caché dada.

Obsoleto desde la versión 5.1: Utiliza en su lugar el constructor GeoIP2().

Consultar

Todos los siguientes procedimientos de consulta pueden tomar una instancia de IPv4Address o IPv6Address, una dirección IP como cadena, o un nombre de dominio completo (FQDN). Por ejemplo, IPv4Address("205.186.163.125"), "205.186.163.125", y "djangoproject.com" serían todos parámetros de consulta válidos.

GeoIP2.city(query)[fuente]

Devuelve un diccionario con información de ciudad para la consulta dada. Algunos de los valores en el diccionario pueden estar indefinidos (None).

GeoIP2.country(query)[fuente]

Devuelve un diccionario con el código y país para la consulta dada.

GeoIP2.country_code(query)[fuente]

Returns the country code corresponding to the query.

GeoIP2.country_name(query)[fuente]

Devuelve el código de país correspondiente a la consulta.

Coordinate Retrieval

GeoIP2.coords(query)[fuente]

Devuelve una tupla de coordenadas (longitud, latitud).

Obsoleto desde la versión 5.1: Use GeoIP2.lon_lat() en su lugar.

GeoIP2.lon_lat(query)[fuente]

Devuelve una tupla de coordenadas (longitud, latitud).

GeoIP2.lat_lon(query)[fuente]

Devuelve una tupla de coordenadas (latitud, longitud),

GeoIP2.geos(query)[fuente]

Devuelve un objeto Point correspondiente a la consulta.

Configuración

GEOIP_PATH

Una cadena o pathlib.Path que especifica el directorio donde se encuentran los archivos de datos GeoIP. Este parámetro es obligatorio a menos que se especifique manualmente con la palabra clave path al inicializar el objeto GeoIP2.

GEOIP_COUNTRY

El basename a utilizar para el archivo de datos país GeoIP. Por defecto es 'GeoLite2-Country.mmdb'.

GEOIP_CITY

El basename a utilizar para el archivo de datos ciudad GeoIP. Por defecto es 'GeoLite2-City.mmdb'.

Excepciones

exception GeoIP2Exception[fuente]

La excepción lanzada cuando ocurre un error en la envoltura GeoIP2. Las excepciones del biblioteca subyacente geoip2 se pasan sin cambios.

Notas al pie