自動獲取公網 IP,修改 DNSPOD 上的記錄值。
接口地址:
- https://dnsapi.cn/Record.Modify
請求參數:
- domain_id 或 domain, 分別對應域名ID和域名, 提交其中一個即可
- record_id 記錄ID,必選
- sub_domain 主機記錄, 如 www,可選,如果不傳,默認為 @
- record_type 記錄類型,通過API記錄類型獲得,大寫英文,比如:A,必選
- record_line 記錄線路,通過API記錄線路獲得,中文,比如:默認,必選
- record_line_id 線路的ID,通過API記錄線路獲得,英文字符串,比如:‘10=1’ 【record_line 和 record_line_id 二者傳其一即可,系統優先取 record_line_id】
- value 記錄值, 如 IP:200.200.200.200, CNAME: cname.dnspod.com., MX: mail.dnspod.com.,必選
- mx {1-20} MX優先級, 當記錄類型是 MX 時有效,范圍1-20, mx記錄必選
- ttl {1-604800} TTL,范圍1-604800,不同等級域名最小值不同,可選
- status [“enable”, “disable”],記錄狀態,默認為”enable”,如果傳入”disable”,解析不會生效,也不會驗證負載均衡的限制,可選
- weight 權重信息,0到100的整數,可選。僅企業 VIP 域名可用,0 表示關閉,留空或者不傳該參數,表示不設置權重信息
腳本(dnspod.ps1,每間隔 5 分鍾更新一次):
[string]$original_ip = "" while($true) { #http://ip.taobao.com/outGetIpInfo?ip=myip&accessKey=alibaba-inc #https://httpbin.org/ip #https://myip.ipip.net/ #https://ip.sb/ #https://ifcfg.cn/echo #(curl "http://ip-api.com/line/?fields=query" -UseBasicParsing).Content; $body = Invoke-WebRequest -Uri "http://ip.03k.org/" #$body = Invoke-WebRequest -Uri "http://ip-api.com/line/?fields=query" $ip = $null if ($body.StatusCode -eq 200) { [string]$ip = $body.ParsedHtml.body.innerHTML #$StartIndex = $str.IndexOf("[") #$EndIndex = $str.IndexOf("]") #$length = $EndIndex - $StartIndex - 1 #$ip = $str.Substring($StartIndex + 1, $length) #echo $(Get-Date) $ip; Write-Host "$(Get-Date): $ip" } else { Write-Warning "Bad Request" } if ($original_ip -eq $ip) { echo $(Get-Date) $ip; } else { $uri = "https://dnsapi.cn/Record.Modify" $p_token = "login_token=264834,3b838d71d5s3a3cafd6f4ebe87e66ea1" $p_record_line_id = "record_line_id=10%3D0" $p_record_id = "record_id=526860736" $p_value = "value=" + $ip $p_sub_domain = "sub_domain=@" $p_record_type = "record_type=A" $p_domain = "domain=baidu.com" curl.exe -X POST $uri ` -d $p_token ` -d $p_record_line_id ` -d $p_record_id ` -d $p_value ` -d $p_sub_domain ` -d $p_record_type ` -d $p_domain echo `; $original_ip = $ip } Sleep 300 } # pause
一般修改三處值即可:
p_token:格式為 ID,TOKEN
p_record_id:在網頁手動修改一次,查看發送的 HTTP 請求,可以獲取到修改域名的 record_id
p_domain:要修改的記錄所對應的域名
https://www.dnspod.cn/docs/records.html#record-modify
https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.utility/invoke-webrequest