## Cloudflare 的 WAF 規則,用於防止爬蟲與其他用途 > [!WARNING] > 套用規則前請替換對應的域名,並將採取措施設爲 **封禁/block** > 規則中也不允許註釋,記得刪掉 ### [default.clj](./default.clj) ⬅️ 點擊鏈接查看完整規則 配置前部分指定哪些域名的哪些路徑或其他規則不允許被訪問,後部分設定觸發規則的請求參數 ```clj ( ( # Gitea 站點 http.host eq "gitea.trle5.xyz" and ( ( # 不允許爬取: commit 記錄, 合併請求預覽和代碼歸檔 http.request.uri.path contains "/commit/" or http.request.uri.path contains "/compare/" or http.request.uri.path contains "/archive/" ) or ( # 不允許請求包含查詢字符串 http.request.uri.query contains "=" ) ) ) # 網盤里哪有什麼好爬的 or http.host eq "alist.trle5.xyz" ) and ( # 根據 UA 觸發規則 http.user_agent contains "YandexBot" or # 一些不老實的爬蟲,被 ban 後會換 UA,得用 ASN 號來封 ip.geoip.asnum eq 32934 or # 一些國家大多數請求都是爬蟲,直接按國家來觸發 ip.geoip.country eq "BR" ) ``` 對於 Gitea 規則大致是: - 不允許查看 commit 修改內容 - 不允許以某個 commit 作爲時間節點查看全部文件(最新文件和任意分支不受影響) - 防止 commit 記錄和文件過多導致無限爬,如果倉庫中有 20 個文件、commit 提交次數爲 15,那爬蟲會爬取 20*15 次,即 300 次 - 不允許查看合併請求預覽(整個頁面) - 不然你會在服務器日誌里看到一堆用一個 commit 去對比另一個 commit 或分支,複雜度爲 commit 數量 * (commit 數量 + 分支數量) - 不允許爬取代碼歸檔(分支和任意 commit) - 因爲每個 commit 都可以下載歸檔 - 不允許攜帶任何查詢字符串 - 光是合併請求和 issues 的一堆過濾方式都夠服務器喝一壺了 不用擔心會影響到正常用戶,這些規則默認只會對爬蟲觸發,就算有用戶不幸在規則內,也只是不能訪問部分頁面而已,想看 commit 記錄還是能 clone 下來翻着看