获取 node.js 应用程序的公共 IP 地址
Posted
技术标签:
【中文标题】获取 node.js 应用程序的公共 IP 地址【英文标题】:Get Public IP Address for node.js application 【发布时间】:2014-12-16 02:49:18 【问题描述】:是否有任何 node.js 模块可用于获取发出请求的客户端计算机的公共 IP 地址?我不是指 IPv4 或 IPv6,我需要像您访问 http://www.whatismyip.com/ 时获得的公共 IP
我试过req.connection.remoteAddress;
,但它没有返回公共IP。它必须是公开的,这样我才能根据 IP 地址定位城市。
谢谢:)
【问题讨论】:
hacksparrow.com/node-js-get-ip-address.html 当我使用 var ip = req.header('x-forwarded-for') || req.connection.remoteAddress;在 http.createServer(function(req,res) );它说 TypeError: Object #我知道这个老问题,但现在你可以使用http://whatismyipaddress.com/api 来获取 IP。只需向 bot.whatismyipaddress.com 发送请求并获取结果。
var http = require('http');
http.get('http://bot.whatismyipaddress.com', function(res)
res.setEncoding('utf8');
res.on('data', function(chunk)
console.log(chunk);
);
);
【讨论】:
【参考方案2】:var ip = (req.headers && req.headers['x-forwarded-for'])
|| req.ip
|| req._remoteAddress
|| (req.connection && req.connection.remoteAddress);
【讨论】:
【参考方案3】:下一行应该够了
let ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress;
如果您在本地进行测试,您将看到私有 IP,但如果您在云端进行测试,您将收到的 IP 是公共 IP。
你可以使用ngrok
在本地测试它
【讨论】:
【参考方案4】:这是一个名为 external-ip 的封装,可以为你做这件事 va npm install external-ip
:
var externalip = require('external-ip');
externalip(function (err, ip)
console.log(ip); // => 8.8.8.8
);
(来源:https://www.npmjs.org/package/external-ip,https://***.com/a/24608249/823548)
【讨论】:
我看到了那个模块,但我并没有试图找到服务器计算机的公共 ip,我正在尝试为客户端计算机获取它以上是关于获取 node.js 应用程序的公共 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章
使用 JavaScript/Node.js 从 IP 地址获取两个字母的大陆代码
如何使用 express 框架通过 node.js 获取远程客户端的本地 IP 地址?