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 :)
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);
});
});
var ip = (req.headers && req.headers['x-forwarded-for'])
|| req.ip
|| req._remoteAddress
|| (req.connection && req.connection.remoteAddress);
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)