查找位置的最佳 node.js 模块? [关闭]
Posted
技术标签:
【中文标题】查找位置的最佳 node.js 模块? [关闭]【英文标题】:Best node.js module for finding location? [closed] 【发布时间】:2013-05-15 21:39:45 【问题描述】:我找到了几个node.js modules 用于使用 IP 地址查找有关客户端位置和网络的信息。
要求:
位置 - 国家、城市、州、纬度、经度等
网络 - 互联网服务提供商、互联网连接类型和互联网速度等。
数据准确性 - 最大可能性。
注意:正在寻找服务器端解决方案。
上述模块使用maxmind data。我也读过maxmind data accuracy。
我对选择上述 node.js 模块有点困惑,我想知道是否有更好的 node.js 框架可用于查找满足我要求的信息或任何其他可以移植到 node.js 的语言插件。
任何想法都会很棒。
【问题讨论】:
@josliber 这个问题很重要,与意见无关。它涉及 ip 到位置转换的最有效延迟方法。 @Internal 寻求建议的问题与堆栈溢出无关,这就是我关闭问题的原因。您可以在***.com/help/on-topic 阅读有关本网站主题内容的更多信息。 IPLocate.io 提供免费 API:https://www.iplocate.io/api/lookup/8.8.8.8
。主页上的文档和用法,包括来自 Node.js 的:www.iplocate.io - 免责声明:我运行此服务。
我认为这个nodejs模块可能适合你location
【参考方案1】:
可以使用基于 IP 的地理位置,但不是很准确。因此,我建议您考虑采用混合方法,例如尝试通过浏览器内的 html5 地理定位 API 获取用户位置,并在必要时回退到服务器端。
我查看了 node.js 可用的两个最常用的 geoip/-location 模块,它们都使用 MaxMind 提供的数据集。 AFAIK,您必须手动使这些数据库保持最新状态,这显然令人沮丧。所以你可以考虑写一个同步服务/脚本,每月更新一次数据库。 (有关 MaxMinds 免费解决方案的更多信息,请访问here)。
kuno/GeoIP
是一个 GeoIP 绑定,因此它的核心是使用 libGeoIP C 库,这没问题,但可能不如纯 javascript 实现 bluesmoon/node-geoip
提供的那样可移植。两者都可以,取决于您更喜欢哪个库。在性能方面,你必须做一些基准测试(如果这个主题对你很重要)......这个问题没有一般的答案,哪种类型的模块(C 绑定/本机)会更快。
如果您愿意花几块钱,还可以查看MaxMinds Web Service,这是一个简单的 REST API,将是最精确的方法。文档非常好,因此入门不会有问题。
【讨论】:
首先感谢您提供宝贵的信息,我已经实现并测试了 kuno/GeoIP,它没有提供这些信息 Internet 服务提供商,Internet 连接类型因为没有免费的数据库,否则 @987654325 @很好。 @dom 你说的AFAIK是什么意思? @Internal AFAIK - 据我所知哈哈 不太准确是轻描淡写。例如,Apple 通常只能在我当前位置的 962 公里(598 英里)范围内找到我。这仍然有点太接近了。【参考方案2】:如果获取到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
对于网络信息,我没有解决方案,但我也在寻找。
【讨论】:
我同意,如果 OP 正在寻找准确性,我会使用像谷歌的地图库这样的外部服务。使用 HTML5 只会在用户允许的情况下获取位置。 你知道如何获取客户端的IP吗?告诉我,如果你不这样做,我会编辑我的答案。 是 var ip = request.headers['x-forwarded-for'] || request.connection.remoteAddress; x-forwarded-for 是一个标头,如果我是正确的,只有当你在代理后面时才有效。 这项服务现已成为付费服务。【参考方案3】:您可以从我的 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
【讨论】:
我创建了这个模块,也许你可以把它整合到你的答案中:github.com/IonicaBizau/node-ipinfo :-) ipinfo.io 运行良好,但请注意,如果您想通过 https 使用它,则必须付费。 ipinfo.io/json/以上是关于查找位置的最佳 node.js 模块? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在node.js中查找两个地理点(lats,longs)之间距离的最佳方法