Чтобы попробовать сервис, просто перейдите на страницу разработки 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 элемента.