网络CLI【免费下载链接】DDNS自动更新域名解析到本机IP,支持dnspod,阿里DNS,CloudFlare,华为云,DNSCOM...项目地址https://gitcode.com/gh_mirrors/dd/DDNS点击查看免费下载本文围绕 DDNS 仓库 中dnspod服务商DNSPod 中国版dnspod.cn的接入展开覆盖 API Token / 邮箱密码两种认证方式的获取与配置、完整 JSON 配置示例、ttl与line取值范围并结合 provider 实现源码 与 单元测试 深入讲解 DDNS 是如何调用 DNSPod API 完成查询 → 创建/修改记录的全过程。读完本文你可以直接复制可运行的配置并理解每次同步背后真实的 API 调用链与故障定位方法。概述DNSPoddnspod.cn是腾讯云旗下的权威 DNS 解析服务在中国大陆地区广泛使用支持动态 DNS 记录的创建与更新。DDNS 项目通过dnspod服务商标识接入该服务并支持多种认证方式进行动态 DNS 记录管理。在 服务商注册表 中可以看到dnspod与dnspod_cn两个标识都映射到同一个DnspodProvider类后者用于兼容旧配置mapping { # dnspod.cn dnspod: DnspodProvider, dnspod_cn: DnspodProvider, # 兼容旧的dnspod_cn # dnspod.com dnspod_com: DnspodComProvider, ... }需要注意仓库中区分了三种相关服务商配置时不要混淆服务商标识适用对象认证方式dnspodDNSPod 中国版dnspod.cnAPI Token 或 邮箱/密码dnspod_comDNSPod 国际版dnspod.com参见 国际版配置指南tencentcloud腾讯云 DNSPodSecretId/SecretKey参见 腾讯云配置指南从源码结构看dnspod_com的DnspodComProvider直接继承自DnspodProvider见 dnspod_com.py仅把 API 地址改为https://api.dnspod.com并把默认线路改为default两者共用同一套请求逻辑。认证信息1. API Token 认证推荐API Token 方式更安全是 DNSPod 推荐的集成方法。获取 API Token 步骤登录 DNSPod 控制台console.dnspod.cn进入用户中心 API 密钥或直接访问console.dnspod.cn/account/token/token点击创建密钥填写描述选择域名管理权限完成创建复制ID数字和Token字符串密钥只显示一次请妥善保存在配置文件中对应id与token两个字段{ dns: dnspod, id: 123456, // DNSPod API Token ID token: Your-API-TOKEN // DNSPod API Token Secret }从源码实现看DDNS 在每次 API 请求时都会把这两个值拼接为login_token参数发送给 DNSPod# ddns/provider/dnspod.py params.update({login_token: {0},{1}.format(self.id, self.token), format: json})即最终请求体中的认证字段形如login_token123456,Your-API-TOKEN这是 DNSPod API 的标准认证格式。同时 基类 _http 方法 会对日志中的 token 自动打码_mask_sensitive_data避免密钥出现在日志输出里。初始化时 基类构造函数 还会校验id、token是否填写缺失会直接抛出id must be configured/token must be configured异常可以在启动阶段就发现配置错误。2. 邮箱密码认证不推荐使用 DNSPod 账号邮箱和密码安全性较低仅建议在特殊场景使用{ dns: dnspod, id: your-emailexample.com, // DNSPod 账号邮箱 token: your-account-password // DNSPod 账号密码 }建议优先使用 API Token 方式提升安全性与管理便捷性避免使用邮箱/密码方式。3. 腾讯云 AccessKey 方式对于使用腾讯云 AccessKeySecretId/SecretKey的用户应改用tencentcloud服务商参见 腾讯云 DNSPod 配置指南。完整配置示例以下配置可通过ddns -c config.json直接运行v4.1 起配置文件支持单行注释{ $schema: https://ddns.newfuture.cc/schema/v4.1.json, // 格式验证 dns: dnspod, // 当前服务商 id: 123456, // DNSPod API Token ID token: abcdef1234567890abcdef1234567890, // DNSPod API Token 密钥 index4: [url:http://api.ipify.org, public], // IPv4地址来源 index6: public, // IPv6地址来源 ipv4: [ddns.newfuture.cc], // IPv4 域名 ipv6: [ddns.newfuture.cc, ipv6.ddns.newfuture.cc], // IPv6 域名 line: 默认, // 解析线路 ttl: 600 // DNS记录TTL秒 }配置文件默认查找顺序为当前目录config.json、用户目录~/.ddns/config.json、Linux 系统目录/etc/ddns/config.json也可用-c指定路径详见 JSON 配置文档。参数说明参数说明类型取值范围/选项默认值参数类型dns服务商标识字符串dnspod无服务商参数id认证 ID字符串DNSPod API Token ID 或邮箱无服务商参数token认证密钥字符串DNSPod API Token 密钥或密码无服务商参数index4IPv4 来源数组参考配置default公用配置index6IPv6 来源数组参考配置default公用配置ipv4IPv4 域名数组域名列表无公用配置ipv6IPv6 域名数组域名列表无公用配置line解析线路字符串参考下方默认服务商参数ttlTTL 时间整数秒参考下方600服务商参数proxy代理设置数组参考配置无公用网络sslSSL 验证方式布尔/字符串auto、true、falseauto公用网络cache缓存设置布尔/字符串true、false、filepathtrue公用配置log日志配置对象参考配置无公用配置参数类型说明公用配置所有支持的 DNS 服务商均适用的标准 DNS 配置参数公用网络所有支持的 DNS 服务商均适用的网络设置参数服务商参数当前服务商支持值与当前服务商相关注意ttl和line不同套餐支持的值可能不同。其中index4/index6支持public、url:...、regex:...、cmd:...、shell:...等多种取值可配置为数组按顺序回退ipv4与ipv6相互独立处理某一族地址获取失败不影响另一族更新。ttlttl参数指定 DNS 记录的生存时间TTL单位为秒。DNSPod 支持的 TTL 范围为 1 到 604800 秒即 7 天如果不设置则使用默认值。套餐类型支持的 TTL 范围秒免费版600 ~ 604800专业版60 ~ 604800企业版1 ~ 604800尊享版1 ~ 604800参考DNSPod 官方 TTL 说明docs.dnspod.cn。从源码看ttl仅在创建记录时作为参数提交给Record.Create接口修改已有记录Record.Modify时不携带 ttl 参数见 _create_record 与 _update_record 的参数差异。lineline参数指定 DNS 解析线路DNSPod 支持的线路包括线路标识说明默认默认电信中国电信联通中国联通移动中国移动教育网中国教育网搜索引擎搜索引擎境外境外更多线路参考DNSPod 官方解析线路说明docs.dnspod.cn。源码中DnspodProvider.DefaultLine 默认定义了未指定line时的兜底值。一个容易踩坑的细节是修改已有记录时线路优先取旧记录中保存的线路值并会把英文Default归一化为default_update_record 中的.replace(Default, default)处理这一行为有专门的单元测试覆盖test_update_record_with_line_conversion。源码实现一次同步背后的 API 调用链DnspodProvider继承自 BaseProvider只需实现四个钩子方法查域名 → 查记录 → 建/改记录的主流程由基类统一驱动set_record(domain, value, ...) │ ▼ 拆分域名 sub / main支持 www~example.com 自定义分隔写法 │ ▼ Domain.Info ── 查询 zone_id结果缓存在 _zone_map │ ▼ Record.List ── 按 sub_domain / record_type / line 查询现有记录 │ ┌────┴─────────┐ ▼ ▼ 有记录 无记录 Record.Modify Record.Create各方法与 DNSPod API 的对应关系见 ddns/provider/dnspod.py方法DNSPod API作用_query_zone_idDomain.Info查询域名信息返回domain.id作为 zone_id_query_recordRecord.List按子域、记录类型、线路查找现有记录多条命中时优先匹配name subdomain的记录_create_recordRecord.Create新建解析记录携带record_line与ttl_update_recordRecord.Modify按record_id修改记录值几个实现细节值得注意请求格式DnspodProvider声明content_type TYPE_FORM所有请求以application/x-www-form-urlencoded表单 POST 到https://dnsapi.cn/{Action}并固定附加formatjson参数_request 方法 会先过滤掉None值参数再发送。响应判定DNSPod API 以status.code 1表示业务成功。业务失败时不会抛异常而是记录 warning含 DNSPod 返回的status.message并返回原始响应最终由set_record统一返回False。HTTP 层错误基类 _http 方法 对 400/401/403/5xx 直接抛出RuntimeError其中 401 会显示为认证失败 [401]这也是测试 TestDnspodProviderRealRequest 用无效凭据验证的异常路径。zone_id 缓存基类get_zone_id会把查询到的 zone_id 存入_zone_map同一次运行中多个同主域记录如a.example.com、b.example.com只会对Domain.Info发起一次请求降低 API 调用量。域名自动拆分基类 _split_zone_and_sub 从最长后缀开始逐级尝试直到找到 DNSPod 账号中已添加的主域因此ipv6.ddns.newfuture.cc这类多级子域也能正确拆分为ipv6.ddns与newfuture.cc若主域未在 DNSPod 添加则日志中出现找不到 zone_id的 critical 信息。单元测试 tests/test_provider_dnspod.py 中的TestDnspodProviderIntegration用 mock 的 HTTP 响应完整复演了两条主流程各 3 次 API 调用创建流程Domain.Info→Record.List空列表→Record.Create更新流程Domain.Info→Record.List命中旧记录→Record.Modify。例如 test_full_workflow_create_record 验证了set_record(www.example.com, 192.168.1.1)恰好触发 3 次 HTTP 请求且结果为True可作为理解实际调用顺序的依据。运行与故障排除基本运行# 使用指定配置文件 ddns -c config.json # 或用 Python 源码运行 python -m ddns -c config.json配置文件优先级为命令行参数 JSON 配置文件 环境变量。例如--ttl 900会覆盖配置文件中的ttl: 300。调试模式--debug是仅支持在命令行传入的参数写在 JSON 配置中不生效启用后可以看到每一步 API 请求/响应详情ddns -c config.json --debug调试日志中会输出POST /Domain.Info、POST /Record.List等请求路径及打码后的请求体token 仅保留首尾两位便于比对 DNSPod 返回的错误信息。常见问题认证失败检查 API Token 或邮箱/密码是否正确确认有域名管理权限HTTP 层会抛出认证失败 [401]异常域名未找到确保域名已添加到 DNSPod 账号、配置拼写无误、域名处于活跃状态对应Domain.Info无结果日志出现找不到 zone_id 或 subdomain记录创建失败检查子域名是否有冲突记录、TTL 设置合理免费版最低 600 秒、确认有修改权限请求频率限制DNSPod 有 API 调用频率限制应降低请求频率如增大运行间隔或利用cache缓存避免值未变化时的频繁更新支持与资源DNSPod 产品文档与 API 参考docs.dnspod.cnDNSPod 控制台console.dnspod.cn国际版dnspod.com参见 DNSPod 国际版配置指南腾讯云 DNSPodAccessKey 方式参见 腾讯云配置指南通用参数index4/index6/proxy/ssl/cache/log参见 JSON 配置参考多 Provider 场景v4.1 起支持providers数组可将 DNSPod 与其他服务商放在同一配置文件中参见 配置文档多 Provider 格式赞分享网络CLI【免费下载链接】DDNS自动更新域名解析到本机IP,支持dnspod,阿里DNS,CloudFlare,华为云,DNSCOM...项目地址https://gitcode.com/gh_mirrors/dd/DDNS点击查看免费下载相关推荐Rclone Box 后端完全指南认证方式、配置参数与源码级实现解析Rclone Box 后端完全指南认证方式、配置参数与源码级实现解析 本文围绕 rclone 官方文档 docs/content/box.md 展开系统讲解CLI数据同步对象存储DDNS 接入阿里云 DNSAliDNSAccessKey 认证、配置参数与源码级实现解析DDNS 接入阿里云 DNSAliDNSAccessKey 认证、配置参数与源码级实现解析 本篇指南讲解如何在 DDNS 项目中接入阿里云 DNSAli网络CLIDDNS JSON 配置文件完全参考格式、参数详解与优先级实现原理DDNS JSON 配置文件完全参考格式、参数详解与优先级实现原理 本文以 DDNS自动更新域名解析到本机 IP 的开源工具的 JSON 配置文件为核心网络CLI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考