Cloudflare API V4來制作DDNS腳本 檔案
必需項
- Global API Key【全域令牌】
- 賬戶郵箱
- 用Cloudflare決議的DNS的域名
獲取賬號Global API Key【全域密鑰】
打開頁面點擊查看獲取令牌

更新域名IP的流程
用域名獲取屬于域名的Zone ID ->
用Zone ID獲取records ID ->
用Zone ID和records ID更新域名
請求頭固定引數
Content-Type:application/json
X-Auth-Email:[email protected] #這里放郵箱
X-Auth-Key:fad44cfad44cfad44cfad44cvfad44cfad44C #放Global API Key
獲取ZONE ID
根域名用name.com作為演示
#GET 請求鏈接
https://api.cloudflare.com/client/v4/zones?name=name.com

#回傳結果 截取部分
{
"result": [
{
"id": "00e3500e3500e3500e3500e3500e3511",
"name": "name.com",
"status": "active",
"paused": false,
"type": "full",
"development_mode": 0,
"name_servers": [
"jonah.ns.cloudflare.com",
"rihana.ns.cloudflare.com"
],
}
],
.....
}
獲取到Zone ID=00e3500e3500e3500e3500e3500e3511
獲取records ID
#GET 請求鏈接 zones/后面接Zone ID
https://api.cloudflare.com/client/v4/zones/00e3500e3500e3500e3500e3500e3511/dns_records

#回傳結果 截取部分
{
"result": [
{
"id": "2be73022be73022be73022be73022be7",
"zone_id": "00e3500e3500e3500e3500e3500e3511",
"zone_name": "name.com",
....
}
獲取到records id=2be73022be73022be73022be73022be7
更新域名決議
PUT 請求鏈接
https://api.cloudflare.com/client/v4/zones/00e3500e3500e3500e3500e3500e3511/dns_records/2be73022be73022be73022be73022be7
要帶json資料Data發送
id=records_id
type=記錄型別
name=域名或二級域名
content=內容
proxied=云朵 是否開啟cdn代理加速
{"id":"2be73022be73022be73022be73022be7","type":"A","name":"name.com","content":"1.1.1.1","proxied":false}

更新成功
回傳
{
"result": {
"id": "00e3500e3500e3500e3500e3500e3511",
"zone_id": "2be73022be73022be73022be73022be7",
"zone_name": "name.com",
"name": "www.name.com",
"type": "A",
"content": "1.1.1.4",
"proxiable": false,
"proxied": false,
......
}
ddns.sh代碼在GitHub上開源 歡迎使用
點擊查看代碼
#!/bin/bash
############### [CloudFlare DDNS] 授權資訊(需修改成你自己的) ################ xiajibashe
# CloudFlare 注冊郵箱
email="[email protected]"
# CloudFlare Global API Key,
GAK="11231232132413241325qwdqer1312312345e"
# 做 DDNS 的根域名
zone_name="ym.com"
# 更新的二級域名,如果想不用,直接填寫根域名
record_name="www.ym.com"
# 域名型別,IPv4 為 A,IPv6 則是 AAAA
record_type="A"
# 是否代理dns決議 cdn加速,否:false 是:true, dns頁面的小云朵
proxy="false"
##外網api
ipv4api="https://api.ipify.org/"
ipv6api="https://api6.ipify.org/"
#獲取IP地址
if [ $record_type = "A" ];then
ip=`curl -ksG ${ipv4api}`
else
ip=`curl -ksG ${ipv6api}`
fi
#pushplus TOKEN 一對一
#一對一token
pushtoken="dasdadasd123213sdasd"
#一對多 群組代碼 不推就不填
pushtpoic=""
#推送標題
pushtitle="CloudfalreDNS-Update"
#推送內容
pushcontent=`echo $ip`
#start Get zone identifier
zone_id=`curl -ksX GET "https://api.cloudflare.com/client/v4/zones?name=${zone_name}" -H "X-Auth-Email: ${email}" -H "X-Auth-Key: ${GAK}" -H "Content-Type: application/json" | cut -b 19-50`
record_id=`curl -ksX GET "https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records" -H "X-Auth-Email: ${email}" -H "X-Auth-Key: ${GAK}" -H "Content-Type: application/json" | cut -b 19-50`
#update
curl -ksX PUT "https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/${record_id}" -k -H "X-Auth-Email: ${email}" -H "X-Auth-Key: ${GAK}" -H "Content-Type: application/json" --data "{\"id\":\"$record_id\",\"type\":\"$record_type\",\"name\":\"$record_name\",\"content\":\"$ip\",\"proxied\":$proxy}"
#push
curl -ksX GET "http://www.pushplus.plus/send?token=${pushtoken}&title=${pushtitle}&content=${pushcontent}&template=html&topic=${pushtpoic}"
echo -e "\n\n---------------------------------"
echo "[CloudFlare]" "${record_name} : ${ip}"
echo -e "---------------------------------\n\n"
nslookup ${record_name}
echo -e "\n\n---------------------------------\n\n"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/412921.html
標籤:其他
上一篇:如何從外網訪問家庭網路
