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

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

In order to perform IP-based geolocation, the GeoIP2 object requires the geoip2 Python library and the GeoIP Country and/or City datasets in binary format (the CSV files will not work!), downloaded from e.g. MaxMind or DB-IP websites. Grab the GeoLite2-Country.mmdb.gz and GeoLite2-City.mmdb.gz files and unzip them in a directory corresponding to the GEOIP_PATH setting.

Кроме того, рекомендуется установить libmaxminddb C library, чтобы geoip2 мог использовать более высокую скорость работы библиотеки C.

Changed in Django 4.2:

Добавлена поддержка файлов .mmdb, загруженных с DB-IP.

Пример

Вот пример его использования:

>>> 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.
Вернуться на верх