# Cloudflare Global API Key CFKEY="254a07bd6f3146e54c45e9a8e97aff6ea0043" # Cloudflare 登录邮箱 CFUSER="nikaidou@shinnku.com" # 一级域名 CFZONE_NAME="congyu.moe" # 二级域名(只填写前缀) CFRECORD_NAME="jp6" # 获取当前公网 IP IP=$(curl -s http://ipv4.icanhazip.com) # 检查 IP 获取是否成功 if [[ -z "$IP" ]]; then echo "无法获取公网 IP,请检查网络连接。" exit 1 fi # 获取 Zone ID ZONE_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$CFZONE_NAME" \ -H "X-Auth-Email: $CFUSER" \ -H "X-Auth-Key: $CFKEY" \ -H "Content-Type: application/json" | grep -o '"id":"[^"]*"' | head -n 1 | cut -d'"' -f4) if [[ -z "$ZONE_ID" ]]; then echo "获取 Zone ID 失败,请检查 API Key 和域名配置。" exit 1 fi # 获取 DNS Record ID RECORD_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?name=$CFRECORD_NAME.$CFZONE_NAME" \ -H "X-Auth-Email: $CFUSER" \ -H "X-Auth-Key: $CFKEY" \ -H "Content-Type: application/json" | grep -o '"id":"[^"]*"' | head -n 1 | cut -d'"' -f4) if [[ -z "$RECORD_ID" ]]; then echo "获取 DNS Record ID 失败,请检查二级域名配置。" exit 1 fi # 更新 DNS 记录 UPDATE_RESPONSE=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \ -H "X-Auth-Email: $CFUSER" \ -H "X-Auth-Key: $CFKEY" \ -H "Content-Type: application/json" \ --data "{\"type\":\"A\",\"name\":\"$CFRECORD_NAME.$CFZONE_NAME\",\"content\":\"$IP\",\"ttl\":120,\"proxied\":false}") # 检查更新结果 if echo "$UPDATE_RESPONSE" | grep -q '"success":true'; then echo "DNS 记录更新成功:$CFRECORD_NAME.$CFZONE_NAME -> $IP" else echo "DNS 记录更新失败,请检查配置。" echo "响应:$UPDATE_RESPONSE" fi