2025年阿里云DDNS免费配置全攻略

import json
import time
import requests
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkalidns.request.v20150109 import UpdateDomainRecordRequest
from aliyunsdkalidns.request.v20150109 import DescribeDomainRecordsRequest
# 配置信息
ACCESS_KEY_ID = ‘你的AccessKey ID’
ACCESS_KEY_SECRET = ‘你的AccessKey Secret’
DOMAIN_NAME = ‘你的域名’
RR_KEYWORD = ‘你要更新的子域名’ # 如 www 或 @
def get_current_ip:
获取当前公网IP地址
try:
response = requests.get(‘http://checkip.amazonaws.com’, timeout=10)
return response.text.strip
except:
try:
response = requests.get(‘http://ipinfo.io/ip’, timeout=10)
return response.text.strip
except:
return None
def get_record_info(client, domain_name, rr_keyword):
获取域名解析记录信息
request = DescribeDomainRecordsRequest.DescribeDomainRecordsRequest
request.set_DomainName(domain_name)
request.set_accept_format(‘json’)
response = client.do_action_with_exception(request)
result = json.loads(response.decode(‘utf-8’))
for record in result[‘DomainRecords’][‘Record’]:
if record[‘RR’] == rr_keyword:
return record[‘RecordId’], record[‘Value’]
return None, None
def update_dns_record(client, record_id, rr, record_type, value):
更新DNS记录
request = UpdateDomainRecordRequest.UpdateDomainRecordRequest
request.set_RecordId(record_id)
request.set_RR(rr)
request.set_Type(record_type)
request.set_Value(value)
request.set_accept_format(‘json’)
response = client.do_action_with_exception(request)
return json.loads(response.decode(‘utf-8’))
def main:
client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, ‘cn-hangzhou’)
current_ip = get_current_ip
if not current_ip:
print(“无法获取当前公网IP地址”)
return
record_id, recorded_ip = get_record_info(client, DOMAIN_NAME, RR_KEYWORD)
if not record_id:
print(“未找到对应的域名解析记录”)
return
if current_ip == recorded_ip:
print(f”IP地址未发生变化: {current_ip}”)
return
result = update_dns_record(client, record_id, RR_KEYWORD, ‘A’, current_ip)
if result.get(‘RecordId’):
print(f”成功更新DNS记录: {RR_KEYWORD}.{DOMAIN_NAME} -> {current_ip}”)
else:
print(“更新DNS记录失败”)
if __name__ == ‘__main__’:
main
aliyun-python-sdk-core-v3>=2.13.0
aliyun-python-sdk-alidns>=2.0.0
requests>=2.25.0

内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。

本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/23043.html

(0)
上一篇 2025年11月10日 下午1:06
下一篇 2025年11月10日 下午1:06
联系我们
关注微信
关注微信
分享本页
返回顶部