Геолокация с GeoIP2

Объект GeoIP2 представляет собой адаптацию библиотеки Python geoip2 от MaxMind . [1]

Чтобы иметь возможность выполнять геолокацию на основе IP-адреса, объекту GeoIP2 требуется библиотека Python geoip2 и один из наборов данных GeoIP Country или City в двоичном формате (файлы CSV не будут работать!). Восстановите файлы 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')
{'country_code': 'US', 'country_name': 'United States'}
>>> g.city('72.14.207.99')
{'city': 'Mountain View',
'continent_code': 'NA',
'continent_name': 'North America',
'country_code': 'US',
'country_name': 'United States',
'dma_code': 807,
'is_in_european_union': False,
'latitude': 37.419200897216797,
'longitude': -122.05740356445312,
'postal_code': '94043',
'region': 'CA',
'time_zone': 'America/Los_Angeles'}
>>> 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

classGeoIP2 ( path = None , cache = 0 , country = None , city ​​= None )

Для объекта GeoIP не требуются параметры, если он использует настройки по умолчанию. Однако, как минимум, этот параметр должен быть определен GEOIP_PATH путем указания пути к расположению наборов данных GeoIP. Следующие именованные параметры можно использовать для настройки параметров по умолчанию во время инициализации.

Именованные параметры Описание
path Базовый каталог, в котором хранятся данные GeoIP, или полный путь к расположению файлов данных о городах и странах (.mmdb). Предполагается, что наборы данных для городов и стран находятся в этом же каталоге; этот параметр имеет приоритет над настройкой GEOIP_PATH .
cache Настройки кеширования при открытии наборов данных GeoIP. Это может быть целым числом (0, 1, 2, 4, 8) , соответствующие настройки , соответственно MODE_AUTO , MODE_MMAP_EXT , MODE_MMAP и GEOIP_INDEX_CACHE настройки MODE_MEMORY API , С. Значение по умолчанию равно 0 ( MODE_AUTO ).
country Имя файла данных страны GeoIP. По умолчанию это GeoLite2-Country.mmdb . Присвоение значения этому параметру приводит к перегрузке значения настройки GEOIP_COUNTRY .
city Имя файла данных городов GeoIP. По умолчанию это GeoLite2-City.mmdb . Присвоение значения этому параметру приводит к перегрузке значения параметра GEOIP_CITY .
Изменено в Django 3.0:

Добавлена поддержка путей path типов pathlib.Path .

Методы

Создание

classmethodGeoIP2.open ( путь , кеш )

Этот метод класса создает экземпляр объекта GeoIP из указанного пути к базе данных и настроек кеша.

Запрос

Все следующие процедуры опроса принимают либо строку IP-адреса, либо полное доменное имя (FQDN). Например, '205.186.163.125' и 'djangoproject.com' являются допустимыми параметрами запроса.

GeoIP2.city( запрос )

Возвращает словарь информации о городе, соответствующем заданному запросу. Некоторые значения в словаре можно оставить неопределенными ( None ).

GeoIP2.country( запрос )

Возвращает словарь, содержащий страну и ее код, соответствующий заданному запросу.

GeoIP2.country_code( запрос )

Возвращает код страны, соответствующий заданному запросу.

GeoIP2.country_name( запрос )

Возвращает название страны, соответствующее заданному запросу.

Получение координат

GeoIP2.coords( запрос )

Вернуть набор координат .(longitude, latitude)

GeoIP2.lon_lat( запрос )

Вернуть набор координат .(longitude, latitude)

GeoIP2.lat_lon( запрос )

Вернуть набор координат .(latitude, longitude)

GeoIP2.geos( запрос )

Возвращает объект, Point соответствующий запросу.

Настройки

GEOIP_PATH

Строка или объект, pathlib.Path указывающий каталог, в котором расположены файлы данных GeoIP. Этот параметр является обязательным, за исключением случая, когда вы указываете параметр вручную path при инициализации объектов GeoIP2 .

Изменено в Django 3.0:

pathlib.Path Добавлена поддержка путей типов .

GEOIP_COUNTRY

Базовое имя, используемое для файла данных страны GeoIP. 'GeoLite2-Country.mmdb' по умолчанию.

GEOIP_CITY

Базовое имя, используемое для файла данных городов GeoIP. 'GeoLite2-City.mmdb' по умолчанию.

Исключения

исключение GeoIP2Exception

Исключение, возникающее при возникновении ошибки во время вызова базовой библиотеки geoip2 .

Сноски

[1]GeoIP (R) - зарегистрированная торговая марка MaxMind, Inc.

Copyright ©2020 All rights reserved