Есть ли модуль node.js, который может определять геолокацию IP?

Дайте IP-адрес, есть ли node.js-модуль, который может определить, в каком городе и состоянии он находится?

Ответы

Ответ 2

Я нашел node-maxmind как наиболее полный и простой в использовании модуль. Вам необходимо загрузить файлы с страницы maxmind download, а затем вы можете использовать ее следующим образом:

maxmind = require 'maxmind'
maxmind.init('GeoLiteCity.dat')
maxmind.getLocation('67.188.232.131')

{ countryCode: 'US',
  countryName: 'United States',
  region: 'CA',
  city: 'Mountain View',
  postalCode: '94043',
  latitude: 37.41919999999999,
  longitude: -122.0574,
  dmaCode: 0,
  areaCode: 0,
  metroCode: 0,
  regionName: 'California' }

Альтернативой использованию модуля, который обычно требует установки базы геолокации и регулярного обновления, является использование API геолокации. Одна из таких услуг - моя, http://ipinfo.io. Вот пример вызова, который использует отличный модуль запроса:

request = require 'request'
request.get('http://ipinfo.io/67.188.232.131', {json: true}, (e, r) -> console.log r.body)

{ 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' }

Подробнее см. http://ipinfo.io/developers.