Подтвердить что ты не робот

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

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

Требования:

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

  • Сеть - поставщик интернет-услуг, тип подключения к Интернету и скорость интернета и т.д.

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

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

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

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

Любая идея будет полезна.

4b9b3361

Ответ 1

Использование геолокации на основе 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 и будет наиболее точным вариантом. Документация довольно хорошая - так что начать с этим не составит труда.

Ответ 2

Если вы получаете IP-адрес, вы всегда можете вызвать внешнюю службу, чтобы получить информацию о местоположении, такую ​​как 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

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

Ответ 3

Вы можете получить всю интересующую вас информацию из моего 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