Геолокация с помощью GeoIP2¶
Обзор¶
Объект GeoIP2 является оболочкой для библиотеки MaxMind geoip2 Python. [1]
Для выполнения геолокации на основе IP объекту GeoIP2 требуется пакет Python geoip2 и наборы данных GeoIP Country и/или City в двоичном формате (файлы CSV не будут работать!), загруженные, например, с Веб-сайты MaxMind или DB-IP. Возьмите файлы GeoLite2-Country.mmdb.gz и GeoLite2-City.mmdb.gz и разархивируйте их в каталог, соответствующий настройке GEOIP_PATH.
Кроме того, рекомендуется установить библиотеку C libmaxminddb, чтобы geoip2 мог использовать более высокую скорость библиотеки C.
Пример¶
Вот пример его использования:
>>> 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)'
Справочник API¶
- class GeoIP2(path=None, cache=0, country=None, city=None)¶
Объект GeoIP не требует каких-либо параметров для использования настроек по умолчанию. Однако, по крайней мере, параметр GEOIP_PATH должен быть установлен с указанием пути к местоположению ваших наборов данных GeoIP. Следующие ключевые слова инициализации могут использоваться для настройки любых значений по умолчанию.
Аргументы ключевых слов |
Описание |
|---|---|
|
Базовый каталог, в котором расположены данные GeoIP, или полный путь к тому, где расположены файлы данных города или страны ( |
|
Настройки кэша при открытии наборов данных GeoIP. Может быть целым числом в (0, 1, 2, 4, 8), соответствующем настройкам API C API MODE_AUTO, MODE_MMAP_EXT, MODE_MMAP и GEOIP_INDEX_CACHE MODE_MEMORY соответственно. По умолчанию 0 ( |
|
Имя файла данных страны GeoIP. По умолчанию используется |
|
Имя файла данных города GeoIP. По умолчанию используется |
Методы¶
Запрос¶
Все следующие процедуры запроса могут принимать экземпляр IPv4Address или IPv6Address, строковый IP-адрес или полное доменное имя (FQDN). Например, IPv4Address(«205.186.163.125»), "205.186.163.125" и "djangoproject.com" будут действительными параметрами запроса.
- GeoIP2.city(query)¶
Возвращает словарь информации о городе для данного запроса. Некоторые значения в словаре могут быть неопределенными («Нет»).
- GeoIP2.country(query)¶
Возвращает словарь с кодом страны и страной для данного запроса.
- GeoIP2.country_code(query)¶
Возвращает код страны, соответствующий запросу.
- GeoIP2.country_name(query)¶
Возвращает название страны, соответствующее запросу.
Поиск координат¶
- GeoIP2.lon_lat(query)¶
Возвращает кортеж координат (долгота, широта).
- GeoIP2.lat_lon(query)¶
Возвращает кортеж координат (широта, долгота),
- GeoIP2.geos(query)¶
Возвращает объект Point, соответствующий запросу.
Настройки¶
GEOIP_PATH¶
Строка или pathlib.Path, определяющая каталог, в котором расположены файлы данных GeoIP. Этот параметр является обязательным, если только он не указан вручную с помощью ключевого слова path при инициализации объекта GeoIP2.
GEOIP_COUNTRY¶
Базовое имя, которое будет использоваться для файла данных страны GeoIP. По умолчанию используется 'GeoLite2-Country.mmdb'.
GEOIP_CITY¶
Базовое имя, которое будет использоваться для файла данных города GeoIP. По умолчанию используется 'GeoLite2-City.mmdb'.
Исключения¶
- exception GeoIP2Exception¶
Исключение, возникающее при возникновении ошибки в оболочке
GeoIP2. Исключения из базовой библиотеки geoip2 передаются без изменений.
Сноски