使用 Node.js 获取公网 IP 地址并写入文件

本教程将指导您如何使用 Node.js 和 ipify API 获取当前设备的公网 IP 地址,并将结果写入一个文本文件。

1. 安装依赖

首先,我们需要安装 httpsfs 模块,这两个模块分别用于处理 HTTPS 请求和文件系统操作。

npm install

2. 代码实现

const https = require('https');
const fs = require('fs');

https.get('https://api.ipify.org?format=json', (response) => {
  let data = '';
  response.on('data', (chunk) => {
    data += chunk;
  });
  response.on('end', () => {
    const ipAddress = JSON.parse(data).ip;
    fs.writeFile('1.txt', ipAddress, (error) => {
      if (error) {
        console.error('写入文件时发生错误:', error);
      } else {
        console.log('IP地址已写入1.txt文件');
      }
    });
  });
}).on('error', (error) => {
  console.error('获取IP地址时发生错误:', error);
});

代码解析:

  1. 使用 https.get() 方法发送 HTTPS 请求到 https://api.ipify.org?format=json,获取 JSON 格式的 IP 地址数据。
  2. 使用 response.on('data', ...)response.on('end', ...) 事件监听器收集响应数据,并使用 JSON.parse() 解析 JSON 数据。
  3. 使用 fs.writeFile() 方法将解析后的 IP 地址写入名为 1.txt 的文件。
  4. 使用 error 事件监听器处理请求过程中可能出现的错误。

3. 在 HTML 代码中调用

Node.js 代码并不直接在 HTML 中调用,因为 Node.js 是一种服务器端的编程语言,而 HTML 是一种客户端的标记语言。如果您想要在前端页面中展示这个 IP 地址,您需要使用一些其他的技术来实现。

一种常见的方法是使用 AJAX(Asynchronous JavaScript and XML)来向服务器端发送请求并获取数据,然后将数据展示在页面上。您可以在前端页面中编写 JavaScript 代码来实现这个功能,示例代码如下:

<html>
  <body>
    <div id='ip-address'></div>
    <script>
      var xhr = new XMLHttpRequest();
      xhr.open('GET', '/get-ip-address', true);
      xhr.onload = function() {
        if (xhr.status === 200) {
          document.getElementById('ip-address').innerHTML = xhr.responseText;
        } else {
          console.error('获取IP地址时发生错误:', xhr.statusText);
        }
      };
      xhr.onerror = function() {
        console.error('获取IP地址时发生错误:', xhr.statusText);
      };
      xhr.send();
    </script>
  </body>
</html>

在这个示例中,我们使用 XMLHttpRequest 对象向服务器端发送 GET 请求,并将响应的数据展示在页面上。服务器端需要提供一个路由(例如 /get-ip-address),并在接收到请求时执行 Node.js 代码来获取 IP 地址并发送响应。您可以使用 Node.js 的 Express 框架来实现这个功能,示例代码如下:

const express = require('express');
const https = require('https');
const app = express();

app.get('/get-ip-address', (req, res) => {
  https.get('https://api.ipify.org?format=json', (response) => {
    let data = '';
    response.on('data', (chunk) => {
      data += chunk;
    });
    response.on('end', () => {
      const ipAddress = JSON.parse(data).ip;
      res.send(ipAddress);
    });
  }).on('error', (error) => {
    console.error('获取IP地址时发生错误:', error);
    res.status(500).send('获取IP地址时发生错误');
  });
});

app.listen(3000, () => {
  console.log('应用已启动,访问 http://localhost:3000');
});

在这个示例中,我们使用 Express 框架创建了一个 HTTP 服务器,监听在端口 3000 上。当接收到 /get-ip-address 路由的请求时,执行 Node.js 代码来获取 IP 地址并发送响应。如果获取 IP 地址时发生错误,我们将返回 500 状态码和错误信息。您可以使用命令行运行这个代码,并在浏览器中访问 http://localhost:3000 来查看效果。

总结

本文介绍了如何使用 Node.js 和 ipify API 获取当前设备的公网 IP 地址,并将结果写入文件。同时,还讲解了如何通过 AJAX 将 IP 地址展示在前端页面上。希望本文能帮助您更好地理解 Node.js 的应用场景,并为您的开发工作提供一些思路。

Node.js获取公网IP地址并写入文件 | 使用ipify API

原文地址: https://www.cveoy.top/t/topic/n9Dr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录