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

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

要求:

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

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

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

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

上面提到的模块使用maxmind数据。 而且我还阅读了有关maxmind数据准确性的信息。

我很少选择上面的node.js模块,我想知道有没有更好的node.js框架可用于查找满足我的要求的信息或任何其他可移植到node.js的语言插件。

任何想法将不胜感激。

karthick asked 2020-06-23T18:22:11Z
3个解决方案
46 votes

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

我看了两个可用于node.js的最常用的geoip / -location模块,它们都使用MaxMind提供的数据集。 AFAIK,您必须手动使这些数据库保持最新状态2,这显然是令人沮丧的。 因此,您可以考虑编写一些同步服务/脚本,该服务/脚本每月更新一次数据库。 (可在此处找到有关MaxMinds免费解决方案的更多信息)。

bluesmoon/node-geoip是一个GeoIP绑定,因此它的核心是使用libGeoIP C库,这可以,但可能不如bluesmoon/node-geoip提供的纯JavaScript实现那样可移植。 两者都可以,这取决于您自己更喜欢哪个库。 在性能方面,您必须做一些基准测试(如果本主题对您而言很重要)……对于该模块(C绑定/本机)的哪种类型更快,没有普遍的答案。

如果您愿意花几美元,也可以研究MaxMinds Web服务,它是一个简单的REST API,将是最精确的方法。 文档非常好-因此开始使用它不会有问题。

dom answered 2020-06-23T18:22:53Z
29 votes

如果获得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

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

brnrd answered 2020-06-23T18:23:18Z
11 votes

你可以得到所有你从我的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]

Ben Dowling answered 2020-06-23T18:23:50Z
translate from https://stackoverflow.com:/questions/16664623/best-node-js-module-for-finding-location