是否有任何node.js模块可用于获取客户端计算机发出请求的公共IP地址?我不是指IPv4或IPv6,我需要像你去http://www.whatismyip.com/时所获得的公共IP
我尝试了req.connection.remoteAddress;
但它没有返回公共IP。它必须是公开的,所以我可以根据IP地址找到城市。
谢谢:)
答案 0 :(得分:4)
我知道这个老问题,但现在您可以使用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);
});
});
答案 1 :(得分:1)
var ip = (req.headers && req.headers['x-forwarded-for'])
|| req.ip
|| req._remoteAddress
|| (req.connection && req.connection.remoteAddress);
答案 2 :(得分:0)
这是一个名为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://stackoverflow.com/a/24608249/823548)
答案 3 :(得分:0)
下一行应该足够
let ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress;
如果在本地进行测试,您将看到专用IP,但是如果在云上进行测试,则将收到的IP是公共IP。
您可以使用ngrok