由于目前CloudFlare好像被进行间歇性阻断。就像下图中CloudFlareST作者说的那样时不时的就会进行干扰,并且CloudFlare也同样的发现了问题。由于CloudFlareST这个工具不能全自动的来进行更换IP的操作。同时我看github上好像没有好用的轮子,所以我才写了下面这个脚本。
脚本内容
注意
在使用脚本之前需要添加你的域名到Cloudflare,A记录 随便填一个IP。该脚本只会更改你的DNS记录 不会添加或者删除
#!/bin/bash
# 下面这些需要填写
API_KEY="你的APIKEY"
API_EMAIL="你的邮箱"
ZONE_ID="你的空间ID"
RECORD_NAME="你的域名"
# CloudflareST的目录路径
cf_directory="/root"
#上面的内容需要填写
cd "$cf_directory"
record_info=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?type=A&name=$RECORD_NAME" \
-H "X-Auth-Email: $API_EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json")
record_id=$(echo "$record_info" | grep -oP '(?<="id":")[^"]+' | head -1)
if [ -z "$record_id" ]; then
echo "无法提取记录ID"
exit 1
fi
echo "域名$RECORD_NAME 的RECORD NAME为 $record_id"
./CloudflareST -n 1000 -f ip.txt
bestip=$(sed -n '2p' ./result.csv | cut -d ',' -f 1)
update_result=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$record_id" \
-H "X-Auth-Email: $API_EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
--data '{"type":"A","name":"'"$RECORD_NAME"'","content":"'"$bestip"'","ttl":1,"proxied":false}')
这个脚本用了CloudflareAPI如果你上面的脚本看不明白怎么用的话下面开始具体的教程
下载CloudFlareST
可以去Github中下载CloudFlareST 链接为:https://github.com/XIU2/CloudflareSpeedTest/releases/tag/v2.2.3
因为这是Linux的shell脚本 ,所以你只能使用Linux来运行这个脚本以及CloudFlareST,你可以根据你的CPU架构来下载合适的CloudFlareST
你需要解压后新建一个文件命名为Start.sh并给这个文件赋予可执行权限
将上面的脚本粘贴进你刚新建的Start.sh
填写配置
API_KEY="你的APIKEY"
API_EMAIL="你的邮箱"
ZONE_ID="你的空间ID"
RECORD_NAME="你的域名"
# CloudflareST的目录路径
cf_directory="/root"
脚本中这些内容需要你来填写一下
空间ID可以在这个位置找到
APIKEY在这里
利用群晖来自动运行该脚本
你可以使用群晖来运行CloudFlareST以及脚本,下面用dsm6来做演示 dsm7基本上一样
确定位置
将CloudFlareST脚本配置好后与CloudFlareST一同上传至群晖
在群晖里邮件属性来查看脚本位置如下图所示我的脚本位置为/volume1/docker/CloudflareUpdate/Start.sh,所以我需要将cf_directory="/root"更改为cf_directory="/volume1/docker/CloudflareUpdate"
定时任务
在群晖中打开控制面板——>任务计划——>新增——>计划的任务——>用户自定义脚本
在计划中输入你想每天重复运行的时间
在运行命令中输入 bash 你的脚本的路径
例如 bash /volume1/docker/CloudflareUpdate/Start.sh
添加完后点确定
运行一下看看有没有什么毛病 基本上就没问题了
3 条评论
谢谢分享脚本!
脚本写的太好了!
另外,我自建了优选domain,一个RECORD_NAME对应十几个优选地址,博主能否给点修改指导,试了试好像API只能获取最后一个id
具体api怎么用可以参考cloudflare的api文档https://developers.cloudflare.com/api/
我觉得优选一个IP然后定时跑这个脚本已经够用了