文章目錄
一旦你的防火牆規則清單膨脹到上千條,手動刪除就像在沙漠裡數沙粒,耗時又痛苦。
這時候,自動化腳本就是救命稻草。
為什麼需要自動清理規則
在使用Cloudflare作為CDN 和WAF 的過程中,我們經常設定IP Access Rules來封鎖惡意請求。
這些規則可能帶有註釋,例如“Blocked by AI B”、“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 存取規則》,對您有幫助。
