家用服务器自动更新腾讯云域名的ipv6地址

家用服务器自动更新腾讯云域名的ipv6地址,解决ipv6地址变化导致域名无法访问问题。
注意token这里是id+密钥
腾讯云token获取地址:https://console.dnspod.cn/account/token/token

import requests
import socket

# 配置
TOKEN = '12345,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'  # 替换为你自己的Token
DOMAIN = 'fengche.site'
SUBDOMAIN = '@'  # 根域名用@,www用www

def get_ipv6():
    s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
    try:
        s.connect(('240c::6666', 80))
        ip = s.getsockname()[0]
    except Exception as e:
        print("获取IPv6失败:", e)
        ip = None
    finally:
        s.close()
    return ip

def get_record_id():
    url = 'https://dnsapi.cn/Record.List'
    data = {
        'login_token': TOKEN,
        'format': 'json',
        'domain': DOMAIN,
        'sub_domain': SUBDOMAIN,
        'record_type': 'AAAA'
    }
    resp = requests.post(url, data=data)
    result = resp.json()
    if 'records' in result and result['records']:
        return result['records'][0]['id']
    else:
        print(result)
        return None

def update_record(record_id, ipv6):
    url = 'https://dnsapi.cn/Record.Modify'
    data = {
        'login_token': TOKEN,
        'format': 'json',
        'domain': DOMAIN,
        'sub_domain': SUBDOMAIN,
        'record_id': record_id,
        'record_type': 'AAAA',
        'record_line': '默认',
        'value': ipv6
    }
    resp = requests.post(url, data=data)
    print(resp.text)

if __name__ == '__main__':
    ipv6 = get_ipv6()
    if not ipv6:
        print("未获取到IPv6地址,退出")
        exit(1)
    print("本机IPv6地址:", ipv6)
    record_id = get_record_id()
    if not record_id:
        print("未找到对应的DNS记录,请先在Dnspod控制台添加AAAA记录")
        exit(1)
    update_record(record_id, ipv6)

你可能感兴趣的:(linux,pytion,服务器,腾讯云,网络)