import requests
import json
import os
import socket

DNSPod配置

DOMAIN = 'yourdomain.com' # 你的域名
SUB_DOMAIN = 'subdomain' # 你希望更新的子域名
RECORD_ID = '123456' # DNS记录的ID,需要你从DNSPod获取
TOKEN = 'yourtoken' # DNSPod的API Token

获取当前动态IP

def get_external_ip():

try:
    return socket.gethostbyname(socket.gethostname())
except:
    return '127.0.0.1'

更新DNS记录

def update_dns(ip):

payload = {
    'sub_domain': SUB_DOMAIN,
    'record_id': RECORD_ID,
    'record_type': 'A',
    'token': TOKEN,
    'value': ip
}
response = requests.post(f'https://dnsapi.cn/Record.Modify', data=payload)
result = json.loads(response.text)
if result['status']['code'] == '1':
    print('DNS updated successfully.')
else:
    print('Failed to update DNS.')

主程序

if name == '__main__':

external_ip = get_external_ip()
update_dns(external_ip)

在使用此脚本之前,请确保你已经在DNSPod获取了RECORD_ID和TOKEN。你需要替换yourdomain.com、subdomain和127.0.0.1为你的实际信息。

此脚本首先定义了获取本地IP和更新DNS记录的函数。主程序部分调用这些函数来更新你的DNS记录。

注意:这个脚本没有错误处理,如果API调用失败,它不会尝试重新更新。在实际应用中,你可能需要添加错误处理和重试逻辑。