CloudFlare动态域名助手 Nodejs版
CloudFlare动态域名助手 Nodejs版
不知道有多少人用CloudFlare的CDN呢?前段时间又重新写了一遍其API的CMD Line Tool。
然后外面加了个C#的Shell。(当然核心还是Node的啦)
然后粗粗实现了用CloudFlare就可以动态域名啦。
新的GUI版本在:https://github.com/XadillaX/CloudFlareDynamicHelper
CloudFlare动态域名助手 Nodejs版
不知道有多少人用CloudFlare的CDN呢?最近我重新编写了一个使用CloudFlare API的Node.js工具。该工具可以让你通过命令行动态更新你的DNS记录,以便保持你的IP地址始终是最新的。
功能概览
- 动态DNS更新:自动更新CloudFlare中的DNS记录以匹配当前的公网IP。
- 简单易用:通过命令行工具实现,支持多种操作系统。
- 灵活配置:支持多种配置选项,方便用户根据自己的需求进行定制。
使用方法
首先,你需要在CloudFlare中注册一个账户,并为你的域名添加相应的DNS记录。接着,你可以在GitHub上找到我的项目并下载源码:
git clone https://github.com/XadillaX/CloudFlareDynamicHelper.git
cd CloudFlareDynamicHelper
安装所需的依赖包:
npm install
接下来,你需要创建一个配置文件config.json
,并在其中填写你的CloudFlare API令牌、Zone ID以及需要更新的DNS记录的详细信息:
{
"apiToken": "your-cloudflare-api-token",
"zoneId": "your-zone-id",
"dnsRecord": {
"name": "your-subdomain.example.com",
"type": "A"
}
}
最后,你可以通过运行以下命令来启动动态DNS更新:
node index.js
示例代码
以下是一个简单的Node.js脚本示例,用于获取当前的公网IP并更新到CloudFlare的DNS记录中:
const axios = require('axios');
const fs = require('fs');
// 读取配置文件
const config = JSON.parse(fs.readFileSync('config.json', 'utf8'));
// 获取当前公网IP
async function getPublicIp() {
const response = await axios.get('https://api.ipify.org?format=json');
return response.data.ip;
}
// 更新DNS记录
async function updateDnsRecord(ip) {
const url = `https://api.cloudflare.com/client/v4/zones/${config.zoneId}/dns_records`;
const data = {
type: config.dnsRecord.type,
name: config.dnsRecord.name,
content: ip
};
const response = await axios.put(url, data, {
headers: {
'Authorization': `Bearer ${config.apiToken}`,
'Content-Type': 'application/json'
}
});
if (response.status === 200) {
console.log(`DNS record updated successfully to ${ip}`);
} else {
console.error('Failed to update DNS record.');
}
}
(async () => {
const currentIp = await getPublicIp();
await updateDnsRecord(currentIp);
})();
总结
以上就是如何使用Node.js实现CloudFlare的动态DNS更新功能。这个工具可以帮助你轻松地保持你的域名解析指向最新的公网IP。如果你有任何问题或建议,欢迎在GitHub上提交issue或pull request。
cloudflare 好用不, 最近想尝试下
我一直在用cloudflare。毕竟国内的都要备案。
CloudFlare动态域名助手 Node.js版
CloudFlare 是一个非常强大的 CDN 和 DNS 管理服务。如果你希望动态地更新你的 DNS 记录(例如,当你需要更新你的 IP 地址时),可以使用 CloudFlare 提供的 API 来实现。
下面将介绍如何使用 Node.js 编写一个简单的 CloudFlare 动态域名助手。
步骤1: 安装依赖
首先,确保你已经安装了 Node.js 和 npm(Node 包管理器)。你可以使用以下命令来创建一个新的项目并安装必要的包:
mkdir cloudflare-helper
cd cloudflare-helper
npm init -y
npm install cf-workers-cli axios
cf-workers-cli
是 CloudFlare 的官方命令行工具。axios
是一个常用的 HTTP 客户端库,用于发送 HTTP 请求到 CloudFlare API。
步骤2: 创建脚本
创建一个名为 update-dns.js
的文件,并添加以下内容:
const axios = require("axios");
// 你的 CloudFlare 账户信息
const EMAIL = "your-email@example.com";
const API_KEY = "your-api-key";
// Zone ID 和记录 ID
const ZONE_ID = "your-zone-id";
const RECORD_ID = "your-record-id";
// 获取当前的公网 IP 地址
async function getPublicIP() {
const response = await axios.get("https://api.ipify.org");
return response.data;
}
// 更新 DNS 记录
async function updateDNSRecord(ip) {
const url = `https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records/${RECORD_ID}`;
const data = {
type: "A",
name: "your-domain.com", // 替换为你的域名
content: ip,
ttl: 120,
proxied: false
};
try {
const response = await axios.put(url, data, {
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${API_KEY}`
}
});
console.log("DNS 记录更新成功:", response.data);
} catch (error) {
console.error("DNS 记录更新失败:", error.response.data);
}
}
(async () => {
const currentIP = await getPublicIP();
console.log("当前公网 IP 地址:", currentIP);
// 检查是否需要更新
const currentDNSIP = await getDNSRecord(ZONE_ID, RECORD_ID); // 你需要自己实现 getDNSRecord 函数
if (currentDNSIP !== currentIP) {
await updateDNSRecord(currentIP);
} else {
console.log("DNS 记录已经是最新状态");
}
})();
解释
- 获取当前公网 IP:使用
axios
向api.ipify.org
发送请求,获取当前的公网 IP 地址。 - 更新 DNS 记录:使用 CloudFlare 的 API 更新指定域名的 A 记录。
- 检查是否需要更新:比较当前公网 IP 和 DNS 记录中的 IP 地址,只有当两者不同时才进行更新。
注意事项
- 将上述代码中的
your-email@example.com
,your-api-key
,your-zone-id
,your-record-id
, 和your-domain.com
替换为你自己的信息。 - 你需要实现
getDNSRecord
函数来获取当前的 DNS 记录,以便与当前的公网 IP 进行对比。
以上就是使用 Node.js 实现 CloudFlare 动态域名助手的基本步骤。希望对你有所帮助!