一、安装 cfst
# 1. 下载并解压(跳过 tar 头)
wget https://ghfast.top/github.com/XIU2/CloudflareSpeedTest/releases/download/v2.3.5/cfst_linux_mipsle.tar.gz -O cfst.tar.gz
gunzip cfst.tar.gz
dd if=cfst.tar of=cfst bs=512 skip=1
chmod +x cfst
rm cfst.tar二、部署 IP 更新脚本
创建 /root/update_ip.sh:
cat > /root/update_ip.sh << 'EOF'
#!/bin/sh
URL1="https://ip.v2too.top/api/nodes"
URL2="https://ip.164746.xyz/ipTop10.html"
IP_FILE="/root/ip.txt"
LOG_FILE="/root/update_ip.log"
echo "$(date): 开始获取优选 IP" >> $LOG_FILE
wget -q -O - --timeout=15 $URL1 | tr ',' '\n' | grep '"ip"' | sed 's/.*"ip":"//;s/".*//' > /tmp/ips1.tmp
wget -q -O - --timeout=15 $URL2 | tr ',' '\n' > /tmp/ips2.tmp
cat /tmp/ips1.tmp /tmp/ips2.tmp 2>/dev/null | sort -u > $IP_FILE
rm -f /tmp/ips1.tmp /tmp/ips2.tmp
COUNT=$(wc -l < $IP_FILE)
echo "$(date): 合并去重后共 $COUNT 个 IP" >> $LOG_FILE
EOF
chmod +x /root/update_ip.sh三、部署 cfst 测速及 DNS 更新脚本
创建 /root/cf_update.sh(注意替换 CF_TOKEN、CF_ZONE_ID、CF_DOMAIN 为你自己的信息):
cat > /root/cf_update.sh << 'EOF'
#!/bin/sh
# ================= 配置区 =================
CF_TOKEN="cfut_o6rh3Dvyu4ptw8JsrWnBH9CaPcPLo9hX05BCXRSya4f8d557"
CF_ZONE_ID="779b0efe8bba316350488c3d96025e84"
CF_DOMAIN="emby-proxy.fleey.dpdns.org"
# ==========================================
# 1. 进入测速工具所在目录
cd /root/
# 2. 运行测速并等待完成
./cfst
# 3. 从 result.csv 中提取排名前 3 的 IP
IP1=$(sed -n '2p' result.csv | awk -F ',' '{print $1}')
IP2=$(sed -n '3p' result.csv | awk -F ',' '{print $1}')
IP3=$(sed -n '4p' result.csv | awk -F ',' '{print $1}')
# 检查是否成功抓取到 IP
if [ -z "$IP1" ]; then
echo "测速失败,未获取到 IP"
exit 1
fi
echo "测速完成,前3名 IP 为: $IP1, $IP2, $IP3"
echo "正在更新 Cloudflare DNS 记录..."
# 4. 获取并删除现有的 A 记录 (防止记录无限叠加)
RECORD_IDS=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records?type=A&name=${CF_DOMAIN}" \
-H "Authorization: Bearer ${CF_TOKEN}" \
-H "Content-Type: application/json" | grep -Eo '"id":"[a-zA-Z0-9]{32}"' | cut -d'"' -f4)
for ID in $RECORD_IDS; do
curl -s -X DELETE "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${ID}" \
-H "Authorization: Bearer ${CF_TOKEN}" \
-H "Content-Type: application/json" > /dev/null
done
# 5. 写入最新的 3 个 A 记录 (注意必须关闭小黄云 proxied:false)
for IP in $IP1 $IP2 $IP3; do
if [ -n "$IP" ]; then
curl -s -X POST "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records" \
-H "Authorization: Bearer ${CF_TOKEN}" \
-H "Content-Type: application/json" \
--data '{"type":"A","name":"'${CF_DOMAIN}'","content":"'${IP}'","ttl":60,"proxied":false}' > /dev/null
fi
done
echo "DNS 更新大功告成!"
EOF
chmod +x /root/cf_update.sh四、设置定时任务
# 写入 crontab
cat << 'CRON' | crontab -
0 8,20 * * * /root/update_ip.sh
0 9,21 * * * /root/cf_update.sh >> /root/cf_update.log 2>&1
CRON
# 验证
crontab -l五、运行测试
# 先手动获取一次 IP
/root/update_ip.sh
cat /root/ip.txt
# 手动执行一次完整测速(确保在 /root 目录下运行)
cd /root
./cf_update.sh
cat /root/cf_update.log六、检查状态
crontab -l
ls -l /root/cfst /root/update_ip.sh /root/cf_update.sh /root/ip.txt
wc -l /root/ip.txt
评论区: