Геолокация с помощью GeoIP2

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

Чтобы выполнить геолокацию на основе IP-адреса, объект GeoIP2 требует geoip2 Python library и GeoIP Country и/или City datasets in binary format (файлы CSV не будут работать!). Возьмите файлы GeoLite2-Country.mmdb.gz и GeoLite2-City.mmdb.gz и распакуйте их в каталог, соответствующий настройке GEOIP_PATH.

Кроме того, рекомендуется установить libmaxminddb C library, чтобы 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

class GeoIP2(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 C API, соответственно. Значение по умолчанию равно 0 (MODE_AUTO).
country Имя файла данных о стране GeoIP. По умолчанию имеет значение GeoLite2-Country.mmdb. Установка этого ключевого слова отменяет установку GEOIP_COUNTRY.
city Имя файла данных о городе GeoIP. По умолчанию имеет значение GeoLite2-City.mmdb. Установка этого ключевого слова отменяет установку GEOIP_CITY.

Методы

Создание

classmethod GeoIP2.open(path, cache)

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

Запрос

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

GeoIP2.city(query)

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

GeoIP2.country(query)

Возвращает словарь с кодом страны и страной для заданного запроса.

GeoIP2.country_code(query)

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

GeoIP2.country_name(query)

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

Координатный поиск

GeoIP2.coords(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.

Сноски

[1]GeoIP(R) является зарегистрированной торговой маркой компании MaxMind, Inc.
Вернуться на верх