Сегодня мы поговорим о том, как сделать геолокацию по IP адресу на сайте, т.е. определение местоположения посетителей, при этом я расскажу, наверное, о самом простом способе реализации этой задачи, который подходит разработчикам.
Начну я с вопроса, а зачем вообще нужен такой функционал на сайте?
Зачем нужно определять местоположение посетителей?
Большинство современных сайтов, в частности интернет-магазины, сервисы и даже обычные корпоративные ресурсы ориентированы на достаточно большую аудиторию, которая нередко располагается по всему миру. При этом для каждой страны сайт должен отображать соответствующий контент, например, язык, цены, валюту и многое другое. Даже относительно одной страны, контент для каждого региона достаточно часто нужно отображать разный. Допустим, у того же самого интернет-магазина может быть несколько филиалов, которые расположены в разных регионах, и чтобы посетителю показывать наличие товаров в филиале, территориально относящемуся к конкретному посетителю, нужно знать местоположение этого посетителя.
Также определять местоположение посетителей требуется и для фильтрации трафика, например, чтобы отфильтровать ботов или нежелательный трафик.
Таким образом, геолокация на сайте нужна для того, чтобы настроить отображение контента в зависимости от местоположения посетителя или фильтрации трафика.
Как определять местоположение посетителей?
Существует несколько различных способов определения местоположения по IP адресу, сегодня я расскажу о способе, который подходит разработчикам, ведь он подразумевает использование API, т.е. программного интерфейса, в нашем случае интернет сервиса. К основным плюсам такого способа можно отнести:
- Простота интеграции функционала в свое приложение;
- Отсутствие необходимости настраивать локальные библиотеки GeoIP.
Во многих популярных CMS, включая и WordPress, и Joomla, есть различные плагины, модули и компоненты, которые, так или иначе, используют данные о местоположении посетителя. Функционал в подобных компонентах и плагинах в большинстве случаев как раз и использует API интерфейс для определения местоположения посетителя. Поэтому если Вы хотите реализовать свой виджет, плагин, модуль или компонент, который должен работать с данными геолокации, то использование API будет наиболее простым решением.
Принцип использования API для реализации геолокации следующий: Вы определяете IP адрес посетителя, затем делаете обычный GET запрос к интернет сервису, который позволяет определять местоположение по IP адресу, и у которого есть API интерфейс, а в качестве параметра Вы как раз и передаете IP адрес посетителя. В ответ он Вам возвращает данные о геолокации, обычно в формате XML или JSON, Вам, в свою очередь, остается обработать полученные данные.
API геолокации по IP адресу – обзор сервиса IPWHOIS.IO
Теперь давайте поговорим о сервисах, у которых есть интерфейс, позволяющий определять местоположение по IP адресу, точнее, сегодня я хочу рассказать Вам всего об одном таком сервисе – это IPWHOIS.IO, основная функция которого – это как раз API геолокации по IP адресу.
Основные особенности IPWHOIS.IO:
- Обновление данных в режиме реального времени – Вы всегда будете получать только актуальную информацию, при этом самостоятельно Вам ничего не нужно обновлять;
- Быстрая работа — серверы IPWHOIS.io расположены по всему миру, что позволяет обрабатывать запросы максимально быстро;
- Безопасная работа – взаимодействие с сервисом происходит по защищенному протоколу HTTPS;
- Поддержка IPv4 и IPv6 – в качестве параметра Вы можете предавать адреса и IPv4, и IPv6;
- Поддержка JSON, XML и Newline – сервис может возвращать данные в нескольких форматах на Ваш выбор, это может быть JSON, XML или Newline;
- Доступно бесплатное использование – сервис позволяет обрабатывать до 1000 запросов в день абсолютно бесплатно, если у Вас небольшой проект, то Вам за использование этого сервиса даже платить не нужно.
Как работать с IPWHOIS.IO?
Сейчас давайте я покажу, как происходит взаимодействие с этим сервисом. Кстати, этот сервис Вы можете использовать и для простого определения местоположения по IP адресу, иными словами, если Вам нужно получить информацию об IP адресе, т.е. геолокацию, Вы можете зайти на IPWHOIS.IO, ввести нужный IP адрес и в ответ получить всю необходимую информацию. Для начала давайте я покажу, как это делается, т.е. как узнать местоположение по IP адресу, разработчики таким способом могут просто проверить работу сервиса.
Переходим на сайт сервиса https://ipwhois.io/ и вводим в специальное поле нужный IP адрес. По умолчанию отображается информация о Вашем IP адресе, другими словами, чтобы получить информацию о Вашем собственном местоположении по IP адресу, достаточно просто перейти на сайт этого сервиса.
Для того чтобы узнать местоположение по какому-то чужому IP, как я уже сказал, вводим IP в поле и нажимаем кнопку поиска.
Чтобы получить точно такую же информацию, но уже, например, в формате JSON можно послать следующий GET запрос
http://free.ipwhois.io/json/8.8.4.4
где
- free.ipwhois.io — адрес интерфейса, для бесплатного использования он такой;
- json – формат возвращаемых данных, если указать XML, то, соответственно, данные вернутся в формате XML;
- 8.8.4.4 – IP адрес, местоположение которого нужно узнать.
В данном случае в ответ Вы получите следующие данные (формат JSON):
{ "ip": "8.8.4.4", "success": true, "type": "IPv4", "continent": "North America", "continent_code": "NA", "country": "United States", "country_code": "US", "country_flag": "https://cdn.ipwhois.io/flags/us.svg", "country_capital": "Washington", "country_phone": "+1", "country_neighbours": "CA,MX,CU", "region": "Virginia", "city": "Ashburn", "latitude": 39.0437567, "longitude": -77.4874416, "asn": "AS15169", "org": "Level 3 Communications", "isp": "Level 3 Communications", "timezone": "America/New_York", "timezone_name": "Eastern Standard Time", "timezone_dstOffset": 0, "timezone_gmtOffset": -18000, "timezone_gmt": "GMT -5:00", "currency": "US Dollar", "currency_code": "USD", "currency_symbol": "$", "currency_rates": 1, "currency_plural": "US dollars" }
Что означает каждый из этих параметров, Вы можете найти в документации, если вкратце, то:
- ip — Запрашиваемый IP адрес;
- success — Статус операции;
- message — Сообщение в случае ошибки (success = false);
- type — Тип IP адреса (IPv4 или IPv6);
- continent — Название континента;
- country — Название страны;
- region — Регион;
- city – Город;
- isp — Имя провайдера;
- currency_code — Код валюты страны.
Как видите, сервис возвращает кроме данных о местоположении еще и дополнительную информацию об этом месте, например, используемая на этой территории валюта, что позволяет Вам автоматически определять валюту, которую необходимо использовать при взаимодействии с конкретным посетителем.
У меня все, надеюсь, этот сервис поможет Вам сделать геолокацию на сайте или в своем приложении, пока!