由于目前CloudFlare好像被进行间歇性阻断。就像下图中CloudFlareST作者说的那样时不时的就会进行干扰,并且CloudFlare也同样的发现了问题。由于CloudFlareST这个工具不能全自动的来进行更换IP的操作。同时我看github上好像没有好用的轮子,所以我才写了下面这个脚本。

https://www.cloudflarestatus.com/incidents/7gd0nkh3tqd7

https://github.com/XIU2/CloudflareSpeedTest/issues/217

脚本内容

注意

在使用脚本之前需要添加你的域名到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

添加完后点确定

运行一下看看有没有什么毛病 基本上就没问题了

最后修改:2024 年 01 月 05 日
如果觉得我的文章对你有用,请随意赞赏