Геолокация с GeoIP2
Объект GeoIP2 является оболочкой для MaxMind geoip2 Python библиотеки. [1]
Для выполнения геолокации по IP-адресу, объект GeoIP2 требует geoip2 Python библиотеку и наборы данных GeoIP Country и/или City в формате двоичных файлов (файлы CSV не подойдут!). Скачайте файлы GeoLite2-Country.mmdb.gz и GeoLite2-City.mmdb.gz и разархивируйте их в директорию, соответствующую настройке GEOIP_PATH.
Кроме того, рекомендуется установить библиотеку libmaxminddb C, чтобы 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,
'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 API C, соответственно. По умолчанию 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
Строка, указывающая директорию расположения файлов данных GeoIP. Эта настройка необходима, если не указана вручную с помощью ключевого слова path при инициализации объекта GeoIP2.
GEOIP_COUNTRY
Используемое имя файла данных GeoIP страны. По умолчанию 'GeoLite2-Country.mmdb'.
GEOIP_CITY
Используемое имя файла данных GeoIP города. По умолчанию 'GeoLite2-City.mmdb'.
Исключения
-
exception GeoIP2Exception -
Исключение, генерируемое при возникновении ошибки в вызове базовой библиотеки
geoip2.
Примечания
| [1] | GeoIP(R) — зарегистрированная торговая марка MaxMind, Inc. |
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/2.1/ref/contrib/gis/geoip2/