Геолокация с GeoIP2 ¶
GeoIP2
Объект является оболочкой для библиотеки MaxMind geoip2 Python . [1]
Для выполнения геолокации на основе IP GeoIP2
объекту требуется библиотека Python geoip2, а также 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,
'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 настройки API C, соответственно. По умолчанию 0 ( MODE_AUTO ). |
country |
Имя файла данных страны GeoIP. По умолчанию GeoLite2-Country.mmdb . Установка этого ключевого слова отменяет GEOIP_COUNTRY установку. |
city |
Имя файла данных города GeoIP. По умолчанию
GeoLite2-City.mmdb . Установка этого ключевого слова отменяет GEOIP_CITY установку. |
Методы ¶
Создание экземпляра ¶
-
classmethod
GeoIP2.
open
( путь , кеш ) ¶
Этот метод класса создает экземпляр объекта GeoIP из заданного пути к базе данных и заданных настроек кеша.
Запрос ¶
Все следующие процедуры запросов могут принимать либо строковый IP-адрес, либо полное доменное имя (FQDN). Например, допустимыми параметрами запроса могут быть оба
'205.186.163.125'
и 'djangoproject.com'
.
-
GeoIP2.
city
( запрос ) ¶
Возвращает словарь информации о городе по заданному запросу. Некоторые значения в словаре могут быть неопределенными ( None
).
-
GeoIP2.
country
( запрос ) ¶
Возвращает словарь с кодом страны и страной для данного запроса.
-
GeoIP2.
country_code
( запрос ) ¶
Возвращает код страны, соответствующий запросу.
-
GeoIP2.
country_name
( запрос ) ¶
Возвращает название страны, соответствующее запросу.
Поиск координат ¶
-
GeoIP2.
coords
( запрос ) ¶
Возвращает кортеж координат (долгота, широта).
-
GeoIP2.
lon_lat
( запрос ) ¶
Возвращает кортеж координат (долгота, широта).
-
GeoIP2.
lat_lon
( запрос ) ¶
Возвращает кортеж координат (широта, долгота),
-
GeoIP2.
geos
( запрос ) ¶
Возвращает Point
объект, соответствующий запросу.
Настройки ¶
GEOIP_PATH
¶
Строка или pathlib.Path
указание каталога, в котором расположены файлы данных GeoIP. Этот параметр является обязательным, если он не указан вручную с path
ключевым словом при инициализации GeoIP2
объекта.
GEOIP_COUNTRY
¶
Базовое имя, которое будет использоваться для файла данных страны GeoIP. По умолчанию
'GeoLite2-Country.mmdb'
.
GEOIP_CITY
¶
Базовое имя, используемое для файла данных города GeoIP. По умолчанию
'GeoLite2-City.mmdb'
.