Bii o ṣe le nu awọn ofin iwọle IP ti a sọ asọye ni WAF laifọwọyi ati ni awọn ẹgbẹ nipa lilo Cloudflare API ati Python

一旦你的防火墙规则列表膨胀到上千条,手动删除就像在沙漠里数沙粒,耗时又痛苦。

这时候,自动化脚本就是救命稻草。

为什么需要自动清理规则

在使用 Cloudflare 作为 CDN 和 WAF 的过程中,我们经常会设置 IP Access Rules 来封禁恶意请求。

这些规则可能带有注释,比如 “Blocked by AIB ",“Wordfence Sync” Tabi “已知攻击者的 IP 地址”,

随着时间推移,规则数量会迅速增加。

如果不清理,控制台里的规则会堆积成山,影响管理效率。

更糟的是,Cloudflare 控制台并没有提供“一键按注释批量删除”的功能。

这意味着你只能一条条手动勾选删除,效率极低。

解决思路

要解决这个问题,我们可以借助 Cloudflare REST API,

通过调用 firewall/access_rules/rules 接口,脚本可以:

  • 分页获取当前域名下的所有规则。
  • 匹配注释字段中的关键字。
  • 自动发起 DELETE 请求,批量清理目标规则。

这种方式不仅高效,还能避免人工误操作。

Bii o ṣe le nu awọn ofin iwọle IP ti a sọ asọye ni WAF laifọwọyi ati ni awọn ẹgbẹ nipa lilo Cloudflare API ati Python
Bii o ṣe le nu awọn ofin iwọle IP ti a sọ asọye ni WAF laifọwọyi ati ni awọn ẹgbẹ nipa lilo Cloudflare API ati Python

前置准备工作

在开始编写脚本之前,你需要准备好几个关键参数。

1. API Token

Lọ si 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 脚本。

Fipamọ bi cloudflare_clean.py,替换其中的 API_TOKENZONE_ID O n niyen.

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()

ṣiṣe akosile

在终端中输入:

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

这说明官方已经提供了接口能力,只是没有在控制台实现批量删除功能。

Ipari

在信息安全的世界里,效率就是防御力。

通过 Python 脚本调用 Cloudflare API,我们不仅解决了控制台的局限,还让防火墙规则管理进入自动化时代。

这是一种 技术与智慧的结合,也是网站安全运营的必然趋势。

真正的高手,不是每天在控制台里点鼠标,而是用代码让机器替自己完成繁琐的工作。

Nítorí náà, ẹ jẹ́ kí a gbé ìgbésẹ̀.

让你的防火墙规则像精密的钟表一样运转,而不是一堆杂乱无章的数字垃圾。

安全的本质,是秩序。秩序的背后,是自动化。

发表 评论

Adirẹsi imeeli rẹ kii yoo ṣe atẹjade. Awọn aaye ti o nilo ni a lo * 标注

Yi lọ si Top