在管理多个 Cloudflare 域名时,手动维护 WAF(自定义规则)往往是一项重复且容易出错的任务。为了解决多域名环境下规则同步的低效问题,我开发并整理了一套基于 Python 的图形化批量部署工具。目前该工具已更新至 v1.0 正式版,现分享出来供有类似运维需求的朋友参考。
项目初衷
当账号下拥有大量域名时,逐个配置“放行运维 IP”、“豁免搜索引擎爬虫”以及“海外流量质询”等规则会耗费大量时间。本方案的核心目标是:一次配置,全局同步,并确保配置的一致性。
核心技术方案
1. 安全的认证机制
工具不仅支持传统的 Global API Key,还全面支持 API Token。建议用户创建具备 Zone.DNS:Read 和 Zone.WAF:Edit 权限的特定令牌,以遵循最小权限原则,提升账号安全性。
2. 智能一致性检查 (Consistency Check)
为了减少不必要的 API 调用,工具内置了增量更新逻辑。在执行部署前,会读取云端现有规则并与本地预期配置进行深度比对:
- 无差异跳过:若规则完全一致,则自动跳过该域名。
- 按需更新:仅在检测到配置偏差时执行重置操作,确保部署过程既高效又精准。
3. 表达式折叠优化 (Expression Folding)
针对“放行代理 IP”规则,工具引入了表达式聚合算法。它会自动将分散的 IP 地址或 CIDR 网段聚合为 ip.src in { … } 格式。
- 突破限制:有效规避了 Cloudflare 单条规则表达式 4096 字符的长度限制。
- 性能提升:聚合后的规则在边缘节点的匹配效率更高,结构也更加清晰。
4. 混合动力批处理模式
针对清理旧规则的环节,工具会根据规则负载自动选择最优策略:
- 标准模式:规则数量较少时,采用逐条删除,操作透明稳健。
- 批量替换模式 (PUT):当自定义规则超过 20 条(默认阈值)时,自动切换为单次 PUT 请求覆盖整个规则集,显著提升处理速度并规避 API 429 频率限制报错。
预设的防御策略
本方案默认集成了三条经过生产环境验证的基础规则:
- 运维白名单:放行指定的 VPS、办公网 IP 或网段,绕过所有安全挑战。
- 良性爬虫豁免:确保 Google、Bing 等已知搜索引擎的自动程序能正常抓取站点,保护 SEO。
- 区域流量挑战:对非中国(含港澳台)地区的流量强制执行托管质询(Managed Challenge),阻断大规模自动化采集行为。
获取与运行
方式一:下载预编译版本 (推荐)
为了方便在 Windows 环境下直接使用,我使用 Nuitka 将 Python 源码转换并编译成了原生的 EXE 执行文件。
- 特点:零依赖,无需安装 Python 环境,启动速度快,运行稳定。
- 下载地址:https://github.com/shzstone/CloudFlare_WAF_Batch_Creator
方式二:通过源码运行
如果您需要自定义内部逻辑,可以克隆仓库并运行:
代码
pip install requests
python CloudflareWAFApp.py分类: 云计算 / 运维实战 / 网络安全
标签: #Cloudflare #WAF #自动化部署 #运维分享 #Python #Nuitka


