0. 参考资料
https://www.youtube.com/watch?v=3y57YVt-PuQ
1. 获取cf账号信息
登录cf, 记录下面三条信息:
- 登录 Cloudflare 控制台,找到域名对应的 Zone ID。(域名 -> 概述右下角 -> 区域ID)
- 我的个人资料 ->API令牌 -> 全局 API Key
- cf账号的邮箱
2. 添加5条A记录
在cf控制台DNS中,随便添加条A记录如 yx1 到 yx5
IP随便乱填
3. 获取域名对应的ID
在运行下面代码,获取对应域名的ID保存到 a2.txt
, json格式化后找到域名对应的ID
更改:
- 区域ID
- 邮箱
- API KEY
Linux
curl -X GET "https://api.cloudflare.com/client/v4/zones/区域_ID/dns_records?page=1&per_page=20&order=type&direction=asc" \ -H "X-Auth-Email: xxxxxxxx@gmail.com" \ -H "X-Auth-Key: 全局_API_Key" \ -H "Content-Type: application/json" > a2.txt
Windows
先下载curl.exe
".\curl.exe" -X GET "https://api.cloudflare.com/client/v4/zones/区域_ID/dns_records?page=1&per_page=20&order=type&direction=asc" -H "X-Auth-Email: xxxxxxxx@gmail.com" -H "X-Auth-Key: 全局_API_Key" -H "Content-Type: application/json" > a2.txt
4. 将 区域ID,域名ID,邮箱,API_Key,自己的域名,替换下面脚本中的内容
Linux
#!/bin/bash
# 初始化计数器n=0
# 运行 CloudflareST -p 0 不输出到控制台./CloudflareST -p 0
# 读取 result.csv 并取每行的第一个字段(IPv4 地址)while IFS=, read -r ip _ # IFS=, 设置分隔符为逗号,read -r ip 读取第一个字段(IPv4地址)do n=$((n+1))
if [ "$n" -eq 2 ]; then echo "$ip" curl -X PUT "https://api.cloudflare.com/client/v4/zones/自己域名的zoneID/dns_records/二级域名对应的ID" \ -H "X-Auth-Email: xxxxx@gmail.com" \ -H "X-Auth-Key: cloudflare的API KEY" \ -H "Content-Type: application/json" \ --data "{\"type\":\"A\",\"name\":\"yx1.自己的域名\",\"content\":\"$ip\",\"ttl\":60,\"proxied\":false}" fi
if [ "$n" -eq 3 ]; then echo "$ip" curl -X PUT "https://api.cloudflare.com/client/v4/zones/自己域名的zoneID/dns_records/二级域名对应的ID" \ -H "X-Auth-Email: xxxxx@gmail.com" \ -H "X-Auth-Key: cloudflare的API KEY" \ -H "Content-Type: application/json" \ --data "{\"type\":\"A\",\"name\":\"yx2.自己的域名\",\"content\":\"$ip\",\"ttl\":60,\"proxied\":false}" fi
if [ "$n" -eq 4 ]; then echo "$ip" curl -X PUT "https://api.cloudflare.com/client/v4/zones/自己域名的zoneID/dns_records/二级域名对应的ID" \ -H "X-Auth-Email: xxxxx@gmail.com" \ -H "X-Auth-Key: cloudflare的API KEY" \ -H "Content-Type: application/json" \ --data "{\"type\":\"A\",\"name\":\"yx3.自己的域名\",\"content\":\"$ip\",\"ttl\":60,\"proxied\":false}" fi
if [ "$n" -eq 5 ]; then echo "$ip" curl -X PUT "https://api.cloudflare.com/client/v4/zones/自己域名的zoneID/dns_records/二级域名对应的ID" \ -H "X-Auth-Email: xxxxx@gmail.com" \ -H "X-Auth-Key: cloudflare的API KEY" \ -H "Content-Type: application/json" \ --data "{\"type\":\"A\",\"name\":\"yx4.自己的域名\",\"content\":\"$ip\",\"ttl\":60,\"proxied\":false}" fi
if [ "$n" -eq 6 ]; then echo "$ip" curl -X PUT "https://api.cloudflare.com/client/v4/zones/自己域名的zoneID/dns_records/二级域名对应的ID" \ -H "X-Auth-Email: xxxxx@gmail.com" \ -H "X-Auth-Key: cloudflare的API KEY" \ -H "Content-Type: application/json" \ --data "{\"type\":\"A\",\"name\":\"yx5.自己的域名\",\"content\":\"$ip\",\"ttl\":60,\"proxied\":false}" fidone < result.csv # 从 result.csv 读取内容
Windows
@echo offSetlocal EnabledelayedexpansionCloudflareST.exe -p 0
for /f "tokens=1 delims=," %%i in (result.csv) do ( set /a n+=1 If !n!==2 ( echo %%i .\curl\bin\curl.exe -X PUT "https://api.cloudflare.com/client/v4/zones/自己域名的zoneID/dns_records/二级域名对应的ID" ^ -H "X-Auth-Email: xxxxx@gmail.com" ^ -H "X-Auth-Key: cloudflare的API KEY" ^ -H "Content-Type: application/json" ^ --data "{\"type\":\"A\",\"name\":\"yx1.自己的域名\",\"content\":\"%%i\",\"ttl\":60,\"proxied\":false}" ) If !n!==3 ( echo %%i .\curl\bin\curl.exe -X PUT "https://api.cloudflare.com/client/v4/zones/自己域名的zoneID/dns_records/二级域名对应的ID" ^ -H "X-Auth-Email: xxxxx@gmail.com" ^ -H "X-Auth-Key: cloudflare的API KEY" ^ -H "Content-Type: application/json" ^ --data "{\"type\":\"A\",\"name\":\"yx2.自己的域名\",\"content\":\"%%i\",\"ttl\":60,\"proxied\":false}" ) If !n!==4 ( echo %%i .\curl\bin\curl.exe -X PUT "https://api.cloudflare.com/client/v4/zones/自己域名的zoneID/dns_records/二级域名对应的ID" ^ -H "X-Auth-Email: xxxxx@gmail.com" ^ -H "X-Auth-Key: cloudflare的API KEY" ^ -H "Content-Type: application/json" ^ --data "{\"type\":\"A\",\"name\":\"yx3.自己的域名\",\"content\":\"%%i\",\"ttl\":60,\"proxied\":false}" ) If !n!==5 ( echo %%i .\curl\bin\curl.exe -X PUT "https://api.cloudflare.com/client/v4/zones/自己域名的zoneID/dns_records/二级域名对应的ID" ^ -H "X-Auth-Email: xxxxx@gmail.com" ^ -H "X-Auth-Key: cloudflare的API KEY" ^ -H "Content-Type: application/json" ^ --data "{\"type\":\"A\",\"name\":\"yx4.自己的域名\",\"content\":\"%%i\",\"ttl\":60,\"proxied\":false}" ) If !n!==6 ( echo %%i .\curl\bin\curl.exe -X PUT "https://api.cloudflare.com/client/v4/zones/自己域名的zoneID/dns_records/二级域名对应的ID" ^ -H "X-Auth-Email: xxxxx@gmail.com" ^ -H "X-Auth-Key: cloudflare的API KEY" ^ -H "Content-Type: application/json" ^ --data "{\"type\":\"A\",\"name\":\"yx5.自己的域名\",\"content\":\"%%i\",\"ttl\":60,\"proxied\":false}" ))
5. 设置自动运行
Linux
将 cfipddns.sh脚本 和 CloudflareST可执行文件放到同一个文件夹下/root/cfip/,然后执行下面命令即可
crontab -e
# 每晚20点执行脚本0 20 * * * cd /root/cfip && /bin/bash ./cfipddns.sh
crontab -l
Windows
待补充