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

标签 node.js

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

有没有办法在不使用像 http://myexternalip.com/raw 这样的服务的情况下实现这一点? ?

谢谢。

最佳答案

可以像他们在 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 库和公共(public) 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 已关闭,这是另一个公共(public) 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);
  });
});

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

关于Node.js - 如何在 node.js 应用程序中获取我的外部 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20273128/

相关文章:

node.js - ejs中的条件怎么写?

node.js - Express-resource 将附加数据从 app.js 传递到路由

javascript - 是否有一个 Node 模块可以将项目编译为客户端文件?

javascript - 放入 Node 5 后,npm ERR!代码 EINVALIDTYPE?

node.js - 无法将套接字存储为数组中的对象

javascript - 在 JavaScript 中创建时区感知日期

ios - 我的 React 应用程序无法在旧版 Safari 浏览器上加载图像和某些组件。显示 SSL 错误

node.js - 在 Microsoft BotFramework v4 node.js 中将对话框与 Luis 连接

node.js - 为什么 Node.js 以这种方式执行?

node.js - Hubot - 从文件加载环境变量