代替DDNS方案,自动更新CloudFlare的AAAA记录

为解决DDNS更新慢的问题,直接通过cloudflare的API来更新AAAA记录

将下面代码保存成cloudflare_ipv6_update.ps1

[System.Net.ServicePointManager]::SecurityProtocol=[System.Net.SecurityProtocolType]::Tls12
while(1){
    $Uri = "http://ipv6.lookup.test-ipv6.com/ip/"
    $ret = (Invoke-WebRequest -Uri $Uri)
    if ($ret.StatusCode -ne 200) {
        "IP获取失败延迟10秒"
        Start-Sleep -Seconds 10
        continue
    }
    $lookup_ipv6 = ConvertFrom-Json $ret.Content
    $ZoneId = "11111" #填写CF域名编号
    $Uri = "https://api.cloudflare.com/client/v4/zones/" + $ZoneId + "/dns_records?type=AAAA"
    $Headers = @{}
    $Headers."Content-Type" = "application/json"
    $Headers."X-Auth-Email" = "[email protected]" #填写CF账号
    $Headers."X-Auth-Key" = "1111" #填写CF密钥
    $ret = (Invoke-WebRequest -Uri $Uri -Headers $Headers)
    if ($ret.StatusCode -ne 200) {
        "域名记录获取失败延迟10秒"
        Start-Sleep -Seconds 10
        continue
    }
    $dns_record_1 = ConvertFrom-Json $ret.Content
    #$ResponseBody.result.id
    if ($dns_record_1.result.content -eq $lookup_ipv6.ip) {
        "IP没有变化延迟10秒.."
        Start-Sleep -Seconds 10
        continue
    }
    $Uri = "https://api.cloudflare.com/client/v4/zones/" + $ZoneId + "/dns_records/" + $dns_record_1.result.id
    $Json = @{}
    $Json.type = $dns_record_1.result.type
    $Json.name = $dns_record_1.result.name
    $Json.content = $lookup_ipv6.ip
    $Json.proxied = [Bool]1
    $Body = ConvertTo-Json $Json
    $Body
    Invoke-WebRequest -Method Put -Uri $Uri -Headers $Headers -Body $Body
    Start-Sleep -Seconds 1
}

 

猜你喜欢

转载自www.cnblogs.com/xiangxisheng/p/11946639.html