是否有node.js模块可以确定IP的地理位置?

时间:2011-08-01 02:38:37

标签: javascript node.js geolocation ip geoip

提供IP,是否有node.js模块可以确定它所在的城市和州?

2 个答案:

答案 0 :(得分:12)

你看过node.js modules page吗?

它列出了GeoIPnode-geoip以及node-maxmindnode-maxmind-native

答案 1 :(得分:1)

我发现node-maxmind是功能最齐全且易于使用的模块。您需要从maxmind download page下载文件,然后您可以像这样使用它:

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