Node.js - 如何在 node.js 应用程序中获取我的外部 IP 地址?

新手上路,请多包涵

我正在使用 node.js,我需要获取我的 ISP 提供的外部 IP 地址。

有没有办法在不使用 http://myexternalip.com/raw 之类的服务的情况下实现这一目标?

谢谢。

原文由 fonini 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 714
2 个回答

可以像在 Python 中一样获取外部 IP,连接到某个网站并从套接字连接中获取您的详细信息:

 const net = require('net');
const client = net.connect({port: 80, host:"google.com"}, () => {
  console.log('MyIP='+client.localAddress);
  console.log('MyPORT='+client.localPort);
});

*不幸的是找不到原始的 Python 示例作为参考..


2019 年更新: 使用来自 https://whatismyipaddress.com/api 的内置 http 库和公共 API

 const http = require('http');

var options = {
  host: 'ipv4bot.whatismyipaddress.com',
  port: 80,
  path: '/'
};

http.get(options, function(res) {
  console.log("status: " + res.statusCode);

  res.on("data", function(chunk) {
    console.log("BODY: " + chunk);
  });
}).on('error', function(e) {
  console.log("error: " + e.message);
});

在 Amazon AWS 服务器上使用 Node.js v0.10.48 进行测试

2021 年更新

ipv4bot 已关闭,这是另一个公共 API:

 var http = require('http');

http.get({'host': 'api.ipify.org', 'port': 80, 'path': '/'}, function(resp) {
  resp.on('data', function(ip) {
    console.log("My public IP address is: " + ip);
  });
});

2022 年更新

ChatGPT 使用 ipify 和 json 编写了更长的示例:*是的,我已经测试过了。 https://gist.github.com/unitycoder/745a58d562180994a3025afcb84c1753

更多信息 https://www.ipify.org/

原文由 mgear 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏