核心是程序自动检测本机公网IP并在变化时调用DNS服务商API更新记录,不依赖第三方DDNS服务;需先开通阿里云、腾讯云或DNSPod的API权限,再通过公开接口获取并比对IP,仅变更时调用对应API更新A/AAAA记录,最后用定时任务部署并加入重试、日志与限频防护。

配置API动态修改DNS解析记录,核心是让程序自动检测本机公网IP,并在变化时调用DNS服务商的API更新对应记录。整个过程不依赖第三方DDNS服务,完全可控,适合阿里云、腾讯云、DNSPod等主流平台。
确认DNS服务商并开通API权限
不同服务商需提前完成以下操作:
-
阿里云:登录RAM控制台,创建子用户并授予
AliyunAlidnsFullAccess权限;获取 AccessKey ID 和 AccessKey Secret -
DNSPod:进入「API密钥管理」生成Token(格式为
ID,Token),无需额外授权 - 腾讯云:在访问管理→API密钥中创建密钥,注意签名算法使用 SHA256 + HMAC,且请求URL需严格按文档拼接
获取当前公网IP并比对是否变更
不能每次执行都盲目更新,应先判断IP是否真的变了。常用方式有:
- 通过公开接口获取,如
https://api.ipify.org或https://ifconfig.me/ip - 本地脚本中缓存上一次成功更新的IP(可存文件或内存),与本次获取值做字符串比对
- 若IP未变,直接退出;仅当不一致时才触发API更新流程
调用API更新指定域名的A/AAAA记录
以阿里云为例,关键步骤包括:
- 先调用
DescribeDomainRecords查询目标域名下所有记录,定位到你要更新的子域名(如home.example.com)及其RecordId - 再调用
UpdateDomainRecord提交新IP,参数含RecordId、RR(主机名)、Type(A 或 AAAA)、Value(新IP)、TTL(建议300秒) - 所有请求必须带标准签名,时间戳、Nonce、Signature等参数缺一不可,SDK会自动处理
DNSPod更简单:直接 POST 到 https://dnsapi.cn/Record.Ddns,带上 login_email、login_password、domain_id、record_id 即可,服务端自动识别当前IP并更新。
部署定时执行与基础防护
确保更新逻辑稳定运行:
- 用
cron(Linux/macOS)或任务计划程序(Windows)设定周期,例如每10分钟检查一次 - 脚本开头加入错误重试机制(如失败则30秒后重试最多2次)
- 记录日志到文件,包含时间、旧IP、新IP、API返回码,便于排查问题
- 避免高频请求:多数服务商限制每分钟调用次数(如阿里云默认100次/分钟),合理设置间隔即可


















