Уже давно фраза "я тебя вычислю по IP" реальна.
Хочется представить очень простой инструмент для определения местоположения по IP - GeoIP. Рассматривать GeoIP стоит как базу данных соответствия интернет и физических адресов. Базы могут отличатся точностью - одна точно определяет страну, а друга может дать точность до улицы.
Одним из лидеров в этой области - MaxMind. Компания выпускает несколько баз, в том числе и бесплатную.
Базы можно скачать по ссылке https://dev.maxmind.com/geoip/legacy/geolite/
Популярные языки (такие как С, Java, Python, PHP) поддерживают работу с продуктом (есть набор привязок и к другим языкам). Но не только языки - nginx отлично работает с GeoIP (и apache2 тоже).
Пример на Python (модуль geoip):
>>> import geoip2.database
>>> reader = geoip2.database.Reader('/path/to/GeoLite2-City.mmdb')
>>> # Replace "city" with the method corresponding to the database
>>> # that you are using, e.g., "country".
>>> response = reader.city('128.101.101.101')
>>> response.country.iso_code
'US'
>>> response.country.name
'United States'
>>> response.country.names['zh-CN']
u'美国'
>>> response.subdivisions.most_specific.name
'Minnesota'
>>> response.subdivisions.most_specific.iso_code
'MN'
>>> response.city.name
'Minneapolis'
>>> response.postal.code
'55455'
>>> response.location.latitude
44.9733
>>> response.location.longitude
-93.2323
>>> reader.close()
Как видно из примера, в базе хранится много полезного.
Приведу примеры использования базы GeoIP:
Ссылки:
http://pynsk.ru/blog/2016/02/13/geoip/
Хочется представить очень простой инструмент для определения местоположения по IP - GeoIP. Рассматривать GeoIP стоит как базу данных соответствия интернет и физических адресов. Базы могут отличатся точностью - одна точно определяет страну, а друга может дать точность до улицы.
Одним из лидеров в этой области - MaxMind. Компания выпускает несколько баз, в том числе и бесплатную.
Базы можно скачать по ссылке https://dev.maxmind.com/geoip/legacy/geolite/
Популярные языки (такие как С, Java, Python, PHP) поддерживают работу с продуктом (есть набор привязок и к другим языкам). Но не только языки - nginx отлично работает с GeoIP (и apache2 тоже).
Пример на Python (модуль geoip):
>>> import geoip2.database
>>> reader = geoip2.database.Reader('/path/to/GeoLite2-City.mmdb')
>>> # Replace "city" with the method corresponding to the database
>>> # that you are using, e.g., "country".
>>> response = reader.city('128.101.101.101')
>>> response.country.iso_code
'US'
>>> response.country.name
'United States'
>>> response.country.names['zh-CN']
u'美国'
>>> response.subdivisions.most_specific.name
'Minnesota'
>>> response.subdivisions.most_specific.iso_code
'MN'
>>> response.city.name
'Minneapolis'
>>> response.postal.code
'55455'
>>> response.location.latitude
44.9733
>>> response.location.longitude
-93.2323
>>> reader.close()
Как видно из примера, в базе хранится много полезного.
Приведу примеры использования базы GeoIP:
- С помощью nginx определять страну пользователя и делать редирект на необходимую языковую версию сайта
- Для решения задачи http://pynsk.ru/tasks/9/ (Cистема "умная страница")
- Реализация таргетирования контента/рекламы
Ссылки:
- Документация модуля geoip для Python - https://geoip2.readthedocs.org/en/latest/
- Базы https://dev.maxmind.com/geoip/legacy/geolite/
http://pynsk.ru/blog/2016/02/13/geoip/
Комментариев нет:
Отправить комментарий