Чтобы попробовать сервис, просто перейдите на страницу разработки GeoIP2: http://dev.maxmind.com/geoip/geoip2/javascript/
. Нам нужно включить скрипт в ваш html.

<script src="//js.maxmind.com/js/apis/geoip2/v2.0/geoip2.js" type="text/javascript"></script>

Если мы протестируем его на локальном хосте, мы сможем поиграть с ним без необходимости регистрировать учетную запись и платить за это.
Итак, просто запустите веб-сервер Python для загрузки вашего html-файла через http.

Этот скрипт в этом html печатает местоположение, полученное MaxMind.

И это то, что мы должны увидеть

2. Импортируйте базу данных MaxMind GeoIP Legacy.

Чтобы импортировать устаревшую базу данных всех IP-сетей и местоположений, вы можете загрузить ее отсюда: MongoDB GeoIPs.zip
Если вы не знаете, как импортировать данные и использовать поиск GeoIP в MongoDB, взгляните на в статье Начните использовать критерии FIND с образцами данных GeoIP
После импорта у вас должно быть 2961041 документов в коллекции ips

3. Создайте небольшой веб-сервис Node.js

Теперь нам нужно создать небольшой веб-сервис на Node.js, который преобразует запрос клиента в местоположение. Когда клиент подключается к серверу, мы можем видеть его IP-адрес, поэтому нам просто нужно найти в нашей базе данных, какое местоположение соответствует ему или его сети.

Мы собираемся использовать экспресс-зависимости и зависимости mongodb, поэтому нам просто нужно добавить их в наш файл package.json и запустить npm install в корневом каталоге проекта, чтобы установить зависимости.

Переменная ip — это IP-адрес клиента. Этот код отправляет IP-адрес обратно клиенту.
Запустив веб-приложение на локальном компьютере для разработки, я могу принудительно указать IP-адрес, передав его как параметр GET.

Это файл index.js приложения Nodejs с кодом инициализации, который инициализирует веб-сервер.

Теперь самое интересное. Мы собираемся искать IP-адрес клиента в нашей коллекции IP-адресов.

Строка 6 преобразует IP-адрес в сеть. В моем случае мой общедоступный IP-адрес — 217.196.248.113, а сеть — 217.196.248.0
Строка 8, подключающаяся к локальной базе данных mongodb поэтического_геоипс.
Строка 13 поиск первого документа с ip = net
Строка 18 После того, как он найден, мы отправляем данные о местонахождении и IP обратно клиенту в виде строки JSON.

4. Создайте библиотеку JS на стороне клиента

Теперь нам нужно разработать библиотеку Javascript, которая после включения в html будет подключаться к нашему веб-серверу и загружать данные о местоположении. Ему просто нужно подключиться к «серверу/локации» с помощью запроса GET. Если вы используете его локально, очевидно, вам нужно передать действительный общедоступный IP-адрес в качестве параметра GET. страница уже использует jQuery. Поэтому нам нужно использовать чистые вызовы XMLHttpRequest (XHR).

Xhr настроен на вызов сервера, на котором работает служба, в данном случае geoip.poeticoding.com. Он преобразует ответ строки json в объект javascript и вызывает обратный вызов успеха с информацией об IP-адресе и местоположении.
Помните, что нам просто нужно загрузить в нашем html-файле библиотеку geoip.js и использовать ее.

После загрузки скрипта geoip.js мы создадим новый экземпляр geoip и запустим функцию locate(), передающую обратный вызов. Внутри обратного вызова просто покажите информацию, изменяющую html элемента.