Node.js获取公网IP地址并写入文件 | 使用ipify API
使用 Node.js 获取公网 IP 地址并写入文件
本教程将指导您如何使用 Node.js 和 ipify API 获取当前设备的公网 IP 地址,并将结果写入一个文本文件。
1. 安装依赖
首先,我们需要安装 https 和 fs 模块,这两个模块分别用于处理 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);
});
代码解析:
- 使用
https.get()方法发送 HTTPS 请求到https://api.ipify.org?format=json,获取 JSON 格式的 IP 地址数据。 - 使用
response.on('data', ...)和response.on('end', ...)事件监听器收集响应数据,并使用JSON.parse()解析 JSON 数据。 - 使用
fs.writeFile()方法将解析后的 IP 地址写入名为1.txt的文件。 - 使用
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 的应用场景,并为您的开发工作提供一些思路。
原文地址: https://www.cveoy.top/t/topic/n9Dr 著作权归作者所有。请勿转载和采集!