自动获取公网 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