Windows PowerShell DNSPOD Script

自动获取公网 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 分钟更新一次):

while($true) {
    #http://ip.taobao.com/outGetIpInfo?ip=myip&accessKey=alibaba-inc
    #http://ip.taobao.com/service/getIpInfo2.php?ip=myip&accessKey=alibaba-inc
    #https://ipinfo.io/ip
    #https://httpbin.org/ip
    #https://myip.ipip.net/
    #https://ip.sb/
    #https://ifcfg.cn/echo
    #https://ifconfig.me/

    #(curl "http://ip-api.com/line/?fields=query" -UseBasicParsing).Content;
    $body = Invoke-WebRequest -Uri "http://ip.03k.org/"
    $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"
    }

    $uri = "https://dnsapi.cn/Record.Modify"
    $p_token = "login_token=ID,Token"
    $p_record_line_id = "record_line_id=10%3D0"
    $p_record_id = "record_id=123456789"
    $p_value = "value=" + $ip
    $p_sub_domain = "sub_domain=@"
    $p_record_type = "record_type=A"
    $p_domain = "domain=xxx.com"
    
    curl.exe -X POST https://dnsapi.cn/Record.Modify `
            -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 `;
    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

https://www.ruanyifeng.com/blog/2019/09/curl-reference.html

原文地址:https://www.cnblogs.com/jhxxb/p/13217538.html