Геолокация с помощью GeoIP2¶
Объект GeoIP2 является оберткой для объекта MaxMind geoip2 Python library. [1]
Для выполнения геолокации по IP-адресу объекту GeoIP2 требуется пакет geoip2 Python и наборы данных GeoIP Country и/или City в бинарном формате (файлы CSV не подойдут!), загруженные, например, с сайтов MaxMind или DB-IP. Захватите файлы GeoLite2-Country.mmdb.gz и GeoLite2-City.mmdb.gz и разархивируйте их в каталог, соответствующий настройке GEOIP_PATH.
Кроме того, рекомендуется установить libmaxminddb C library, чтобы geoip2 мог использовать более высокую скорость работы библиотеки C.
Добавлена поддержка файлов .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)¶
Возвращает название страны, соответствующее запросу.
Настройки¶
GEOIP_PATH¶
Строка или pathlib.Path, указывающая каталог, в котором находятся файлы данных GeoIP. Эта настройка обязательна, если не задана вручную с помощью ключевого слова path при инициализации объекта GeoIP2.
GEOIP_COUNTRY¶
Основное имя, которое будет использоваться для файла данных о стране GeoIP. По умолчанию имеет значение 'GeoLite2-Country.mmdb'.
GEOIP_CITY¶
Основное имя, которое будет использоваться для файла данных о городе GeoIP. По умолчанию имеет значение 'GeoLite2-City.mmdb'.