源码系统概览
文章正文
cf2dns 是一套面向站长的 CDN 优选节点自动解析工具,能够以定时任务的方式把实测更快的 Cloudflare、CloudFront、EdgeOne 等节点的 IPv4 与 IPv6 地址,自动写入到阿里云、腾讯云 DNSPod、华为云等解析服务商的记录中。
本项目同时提供宝塔面板插件、纯 Python3 脚本与 GitHub Actions 三种运行形态,适配不同运维习惯,核心价值在于让国内三大运营商线路均能命中最优回源节点。
源码简介
仓库根目录下的 cf2dns.py、cf2dns_global.py、cf2dns_actions.py 分别对应宝塔插件宿主、Python3 独立运行、GitHub Actions 三种入口,三者共享 dns 目录下的 aliyun.py、huawei.py、qCloud.py 三大云解析驱动。
cf2dns_main.py 是宝塔插件的服务端类,负责读取与保存 config.json、domains.json、provider.json 并在面板内提供增删改查接口;index.html 则是插件在宝塔后台的可视化配置界面。
整个项目无数据库依赖,所有配置以 JSON 文件落盘,部署体积小、可移植性强,适合个人站长与小型团队用于 CDN 节点优选自动化。
适用场景
网站使用 Cloudflare 或 EdgeOne 等泛播 CDN,且希望国内电信、联通、移动三网分别解析到最优节点以提升访问速度的场景。
使用宝塔面板管理服务器、希望通过可视化界面而不是命令行维护优选 IP 的站长群体。
需要在无服务器环境下借助 GitHub Actions 定时免费跑优选任务的轻量用户。
功能亮点
支持 Cloudflare、CloudFront、EdgeOne 多家厂商官方优选接口,并内置多个公共优选源。
同时兼容阿里云解析、腾讯云 DNSPod、华为云解析三大国内服务商,按线路分别回写记录。
提供宝塔插件可视化界面、Python3 命令行、GitHub Actions 三种形态,灵活适配不同环境。
配置与域名数据以 JSON 文件存储,支持直接备份与迁移,部署与二次开发成本低。
技术架构与部署指南
| 维度 | 本套源码 | 同类通用方案 |
|---|---|---|
| 技术栈 | 前端:宝塔插件界面 index.html(原生 HTML/JS) 后端:Python3(cf2dns_main.py |
依具体方案选型,需自行搭建与维护 |
| 部署方式 | 宝塔环境请通过插件中心安装 cf2dns 插件,安装前关闭系统加固插件以免中断安装脚本,并确认网站域名已用 CNAME | 多托管于第三方平台或订阅云服务 |
| 功能侧重 | 支持 Cloudflare、CloudFront、EdgeOne 多家厂商官方优选接口,并内置多个公共优选源。 | 功能通用,定制深度有限 |
| 数据归属 | 数据自持,部署在自有服务器,不出站 | 数据通常留存于服务商侧 |
| 成本模式 | 获取后自主部署,无持续授权费用 | 通常按订阅或调用量计费 |
技术栈与运行环境
前端:宝塔插件界面 index.html(原生 HTML/JS)
后端:Python3(cf2dns_main.py 依赖宝塔 public 模块,cf2dns_global.py 可独立运行)
数据库:无(配置以 config.json / domains.json / provider.json 文件存储)
运行环境:Python 3.7+,宝塔面板 7.x/9.x/10.x 或任意装有 Python3 的 Linux 主机
其他依赖:aliyun-python-sdk-alidns、huaweicloudsdkdns、tencentcloud-sdk-python、requests
安装与部署提示
宝塔环境请通过插件中心安装 cf2dns 插件,安装前关闭系统加固插件以免中断安装脚本,并确认网站域名已用 CNAME 或 SaaS 方式接入且解析在支持三网线路的云解析服务商。
Python3 独立运行请执行 pip install -r requirements.txt 后运行 cf2dns_global.py,GitHub Actions 形态则参照仓库 Wiki 配置工作流密钥。
本工具需要从第三方优选接口拉取节点 IP,部署时应确认所选接口稳定可用,并自行核对回写记录,避免第三方返回异常 IP 影响解析。
截图与演示说明
宝塔插件后台提供首页配置界面,对应 index.html 与 cf2dns_main.py 的 get_home_info/set_home_info,可开关 IPv4/IPv6、选择 DNS 服务商与影响记录数。
域名管理页面支持新增、删除需要优选的域名与主机名,数据落盘到 domains.json,并区分电信、联通、移动三网线路。
授权积分模块会调用 provider.json 中配置的 get_license_url 校验积分,配置界面与接口逻辑均可在源码中直接查看。
常见问题
问:为什么别人用优选很快,我用优选反而慢?
优选只测用户端到 CDN 节点的速度,节点仍需访问源站;若源站到节点链路不稳,整体依旧偏慢,建议增强缓存或更换国际线路较好的源站。
问:为什么不支持海外 DNS 解析运营商?
海外 DNS 不支持国内三网线路分别解析,无法实现三网优选;如不便使用国内云解析,可改用本项目提供的公共 CNAME 地址。
安全风险提示
特别提示:本源码未检测安全风险文件,下载后请务必进行安全审计,删除恶意代码后再部署使用!
下载说明
源码仅供学习研究、测试部署和二次开发参考,商用前请自行确认授权、版权和安全风险。
项目依赖第三方优选接口与云解析 API 密钥,使用过程中产生的解析变更与费用请自行评估与承担。