Лучший модуль node.js для поиска местоположения?

Я нашел пару модулей node.js для поиска информации о местонахождении клиента и сети по IP-адресу.

Требования:

  1. Местоположение - страна, город, штат, широта, долгота и т. Д.

  2. Сеть - Интернет-провайдер, тип интернет-соединения, скорость интернета и т. Д.

  3. Точность данных - максимальная возможность.

Примечание. Ищете решение на стороне сервера.

Вышеупомянутые модули используют данные maxmind. И я читал о точности данных MaxMind.

Я немного растерялся, выбирая вышеупомянутые модули node.js, и мне хотелось бы знать, существуют ли какие-либо более эффективные платформы node.js для поиска информации, отвечающей моим требованиям, или любые другие языковые плагины, которые могут быть перенесены в node.js.

Любая идея будет отличной.

3 ответа

Решение

Использование геолокации на основе IP возможно, но не очень точно. Поэтому я предлагаю вам подумать о гибридном подходе, таком как попытка определить местоположение пользователей с помощью API геолокации HTML5 внутри браузера и откатиться на сервер, если это необходимо.

Я взглянул на два наиболее используемых модуля geoip/-location, доступных для node.js, и они оба используют наборы данных, предоставленные MaxMind. AFAIK, вы должны поддерживать актуальность этих баз данных вручную, что является явным недостатком. Поэтому вы можете написать небольшой сервис / скрипт для синхронизации, который обновляет базу данных раз в месяц. (Более подробную информацию о бесплатном решении MaxMinds можно найти здесь).

kuno/GeoIP это привязка GeoIP, поэтому в своей основе она использует библиотеку libGeoIP C, что нормально, но, возможно, не так переносимо, как реализация чистого JavaScript bluesmoon/node-geoip предложения. Оба в порядке, и вам решать, какая библиотека вам больше нравится. С точки зрения производительности вы должны сделать несколько тестов производительности (если эта тема важна для вас)... Нет общего ответа на вопрос, какой тип модуля (C-binding/native) будет быстрее.

Если вы готовы потратить несколько долларов, вы также можете обратиться к веб-службе MaxMinds, которая представляет собой простой REST API и будет наиболее точным способом. Документация довольно хорошая - так что начать с этим не составит труда.

Если вы получаете IP, вы всегда можете позвонить во внешнюю службу, чтобы получить информацию о местоположении, такую ​​как ht tp://freegeoip.net/ и используя модуль запроса.

(ip, location) ->
  url = 'http://freegeoip.net/json/' + ip
  request.get url, (error, response, body) ->
    if !error && response.statusCode == 200
      data = JSON.parse body
      location data

Для сетевой информации у меня нет решения, но я тоже его ищу.

Вы можете получить всю интересующую вас информацию из моего API на http://ipinfo.io/ API:

$ curl ipinfo.io
{
  "ip": "67.188.232.131",
  "hostname": "c-67-188-232-131.hsd1.ca.comcast.net",
  "city": "Mountain View",
  "region": "California",
  "country": "US",
  "loc": "37.4192,-122.0574",
  "org": "AS7922 Comcast Cable Communications, Inc.",
  "postal": "94043"
}

Он поддерживает JSONP и CORS, поэтому вы можете использовать его на стороне сервера или клиента. Более подробная информация доступна на http://ipinfo.io/developers

Другие вопросы по тегам