სტატიების დირექტორია
一旦你的防火墙规则列表膨胀到上千条,手动删除就像在沙漠里数沙粒,耗时又痛苦。
这时候,自动化脚本就是救命稻草。
为什么需要自动清理规则
在使用 Cloudflare 作为 CDN 和 WAF 的过程中,我们经常会设置 IP Access Rules 来封禁恶意请求。
这些规则可能带有注释,比如 “Blocked by AIB ”,“Wordfence Sync” 或 “已知攻击者的 IP 地址”.
随着时间推移,规则数量会迅速增加。
如果不清理,控制台里的规则会堆积成山,影响管理效率。
更糟的是,Cloudflare 控制台并没有提供“一键按注释批量删除”的功能。
这意味着你只能一条条手动勾选删除,效率极低。
解决思路
要解决这个问题,我们可以借助 Cloudflare REST API.
通过调用 firewall/access_rules/rules 接口,脚本可以:
- 分页获取当前域名下的所有规则。
- 匹配注释字段中的关键字。
- 自动发起 DELETE 请求,批量清理目标规则。
这种方式不仅高效,还能避免人工误操作。

前置准备工作
在开始编写脚本之前,你需要准备好几个关键参数。
1. API Token
Წადი Cloudflare API Tokens 页面 创建一个新的 Token。
必须赋予权限:Zone → Firewall Services → Edit.
2. Zone ID
登录 Cloudflare 控制台,进入域名的 Overview 页面,在右侧即可找到 32 位 Zone ID。
3. 安装依赖库
在 PowerShell 或终端中运行:
python -m pip install requests
这样就能安装 requests 库,确保脚本能正常调用 API。
完整 Python 脚本
下面是一份可直接使用的 Python 脚本。
შენახვა როგორც cloudflare_clean.py,替换其中的 API_TOKEN 和 ZONE_ID ᲙᲐᲠᲒᲘ.
import requests
API_TOKEN = "你的_API_TOKEN"
ZONE_ID = "你的_ZONE_ID"
TARGET_NOTE = "Blocked by AIB"
headers = {
"Authorization": f"Bearer {API_TOKEN}",
"Content-Type": "application/json",
}
def delete_matching_ip_rules_zone():
page = 1
deleted_count = 0
while True:
url = f"https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/firewall/access_rules/rules?page={page}&per_page=100"
response = requests.get(url, headers=headers)
if response.status_code != 200:
print(f"请求失败: {response.text}")
break
data = response.json()
rules = data.get("result", [])
if not rules:
break
for rule in rules:
rule_id = rule.get("id")
rule_value = rule.get("configuration", {}).get("value")
rule_notes = rule.get("notes", "")
if TARGET_NOTE in rule_notes:
del_url = f"{url}/{rule_id}"
del_res = requests.delete(del_url, headers=headers)
if del_res.json().get("success"):
print(f"✅ 删除成功: {rule_value}")
deleted_count += 1
result_info = data.get("result_info", {})
total_pages = result_info.get("total_pages", 1)
if page >= total_pages:
break
page += 1
print(f"清理完成,共删除 {deleted_count} 条规则。")
if __name__ == "__main__":
delete_matching_ip_rules_zone()
გაუშვით სკრიპტი
在终端中输入:
python /path/to/cloudflare_clean.py
脚本会自动扫描并删除带有指定注释的规则。
常见问题与排坑指南
1. Zone vs Account 权限
- Zone 级别规则:只作用于单域名。
- Account 级别规则:作用于整个账户,需要修改 API 路径为
/accounts/{ACCOUNT_ID}/....
2. 鉴权报错
如果出现 403 Authentication error,通常是权限范围设置错误。
确保 Token 权限包含 Firewall Services → Edit.
3. 分页机制
Cloudflare API 单次最多返回 100 条规则。
脚本通过 result_info.total_pages 自动翻页,确保完整扫描。
为什么自动化是必然选择
在实际生产环境中,规则数量可能轻松突破 5000 条.
人工删除不仅耗时,还容易遗漏。
通过自动化脚本,你可以:
- 每天定时清理过期规则。
- 保持防火墙规则列表整洁。
- 避免误封正常用户。
这种方式能让网站安全管理更高效。
Cloudflare 官方文档明确指出:
“The API provides programmatic access to manage firewall rules, including creation, listing, and deletion.”
წყარო:Cloudflare API Documentation
这说明官方已经提供了接口能力,只是没有在控制台实现批量删除功能。
დასკვნა
在信息安全的世界里,效率就是防御力。
通过 Python 脚本调用 Cloudflare API,我们不仅解决了控制台的局限,还让防火墙规则管理进入自动化时代。
这是一种 技术与智慧的结合,也是网站安全运营的必然趋势。
真正的高手,不是每天在控制台里点鼠标,而是用代码让机器替自己完成繁琐的工作。
ასე რომ, მოდით, ვიმოქმედოთ.
让你的防火墙规则像精密的钟表一样运转,而不是一堆杂乱无章的数字垃圾。
安全的本质,是秩序。秩序的背后,是自动化。
იმედი ჩენ ვეილიანგის ბლოგი ( https://www.chenweiliang.com/ ) 分享的《如何利用 Cloudflare API + Python 自动批量清理WAF指定注释的 IP 访问规则》,对您有帮助。
კეთილი იყოს თქვენი მობრძანება ამ სტატიის ბმულის გასაზიარებლად:https://www.chenweiliang.com/cwl-34436.html
