有一个node.js模块可以确定一个IP的地理位置吗?

给一个IP,有没有一个node.js模块可以确定它在哪个城市和州?

你有没有看过node.js模块页面 ?

它列出了GeoIP和node-geoip以及node-maxmind和node-maxmind-native 。

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

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