用于查找位置的最佳node.js模块?

kar*_*ick 48 ip geolocation node.js node-modules maxmind

我找到了几个node.js模块,用于使用ip地址查找有关客户端位置和网络的信息.

要求:

  1. 位置 - 国家,城市,州,纬度,经度等

  2. 网络 - 互联网服务提供商,互联网连接类型和互联网速度等

  3. 数据准确性 - 最大可能性.

注意:寻找服务器端解决方案.

上述模块使用maxmind数据.我也读过有关maxmind数据准确性的文章.

我很困惑选择上面的node.js模块,我想知道是否有更好的node.js框架可用于查找符合我要求的信息或任何其他可以移植到node.js的语言插件.

任何想法都会很棒.

dom*_*dom 46

使用基于IP的地理定位是可能的,但不是很准确.因此,我建议您考虑使用混合方法,例如尝试通过浏览器内的HTML5地理位置API获取用户位置,并在必要时回退到服务器端.

我查看了node.js可用的两个最常用的geoip/-location模块,它们都使用MaxMind提供的数据集.AFAIK你必须手动保持这些数据库2日期,这是一个明显的下降.因此,您可以考虑编写一个小同步服务/脚本,每月更新一次数据库.(有关MaxMinds免费解决方案的更多信息,请参见此处).

kuno/GeoIP是一个GeoIP绑定,所以它的核心是使用libGeoIP C库,这是可以的,但可能不像纯JavaScript实现bluesmoon/node-geoip提供的那样可移植.两者都没关系,这取决于你更喜欢哪个库.在性能方面你必须做一些benchmakrs(如果这个主题对你很重要)......问题没有一般答案,哪种类型的模块(C-binding/native)会更快.

如果您愿意花几块钱,您还可以查看MaxMinds Web Service,这是一个简单的REST API,将是最精确的方式.文档非常好 - 所以开始使用它不会是一个问题.

  • 首先感谢有价值的信息,我已经实施并测试了kuno/GeoIP,它没有给出这些信息互联网服务提供商,互联网连接类型becoz没有这个的免费数据库,否则[kuno/geoip](https:// github.com/kuno/GeoIP)很好. (2认同)

brn*_*nrd 29

如果您获得了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
Run Code Online (Sandbox Code Playgroud)

对于网络信息,我没有解决方案,但我也在寻找解决方案.

  • 是var ip = request.headers ['x-forwarded-for'] || request.connection.remoteAddress; (3认同)
  • 我同意,如果OP正在寻找准确性,我会使用像谷歌地图库这样的外部服务.使用HTML5只会在用户允许的情况下获取位置. (2认同)
  • 这现已成为一项付费服务​​。 (2认同)

Ben*_*ing 11

您可以从我的API获取您在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"
}
Run Code Online (Sandbox Code Playgroud)

它支持JSONP和CORS,因此您可以在服务器端或客户端使用它.有关更多详细信息,请访问http://ipinfo.io/developers

  • ipinfo.io 运行良好,但请注意,如果您想通过 https 使用它,则必须付费。 (2认同)