Get Public IP Address for node.js application

2019-02-20 22:19发布

问题:

Is there any node.js module that can be used to get the public IP address of the client's computer making a request? I don't mean IPv4 or IPv6, I need the public IP like you get when you go to http://www.whatismyip.com/

I have tried req.connection.remoteAddress; but it doesn't return the public IP. It has to be public so I can locate the city based on the IP address.

Thanks :)

回答1:

I know this old question, but now you can use http://whatismyipaddress.com/api to get IP. Just send request to bot.whatismyipaddress.com and get result.

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:

Here's a packaged called external-ip that can do that for you va npm install external-ip:

var externalip = require('external-ip');
externalip(function (err, ip) {
   console.log(ip); // => 8.8.8.8
});

(sources: https://www.npmjs.org/package/external-ip, https://stackoverflow.com/a/24608249/823548)