繁体   English   中英

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

[英]Get Public IP Address for node.js application

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

我试过req.connection.remoteAddress; 但它不会返回公共 IP。 它必须是公开的,这样我才能根据 IP 地址定位城市。

谢谢 :)

我知道这个老问题,但现在您可以使用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);
    });
});
var ip = (req.headers && req.headers['x-forwarded-for'])
         || req.ip 
         || req._remoteAddress 
         || (req.connection && req.connection.remoteAddress);

下一行应该就够了

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

如果您在本地测试,您将看到私有 IP,但如果您在云上测试,您将收到的 IP 是公共 IP。

您可以使用ngrok在本地测试它

这是一个名为 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM