获取node.js应用程序的公共IP地址

时间:2014-10-21 00:41:14

标签: javascript node.js ip

是否有任何node.js模块可用于获取客户端计算机发出请求的公共IP地址?我不是指IPv4或IPv6,我需要像你去http://www.whatismyip.com/时所获得的公共IP

我尝试了req.connection.remoteAddress;但它没有返回公共IP。它必须是公开的,所以我可以根据IP地址找到城市。

谢谢:)

4 个答案:

答案 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-iphttps://stackoverflow.com/a/24608249/823548

答案 3 :(得分:0)

下一行应该足够

let ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress;

如果在本地进行测试,您将看到专用IP,但是如果在云上进行测试,则将收到的IP是公共IP。

您可以使用ngrok

在本地对其进行测试