關閉 Cloudflare JavaScript Detection (JSD)
Cloudflare Pages/Workers 會在你的網站自動塞入 /cdn-cgi/ 腳本,本文教你如何關掉這兩個煩人的東西。
在瀏覽器中 F12 開啟開發者工具後,移動到 Network 網路面板,進入你的網站或是重新整理看 Network 列出的所有請求,有 main.js 且路徑是 /cdn-cgi/challenge-platform/scripts/jsd/main.js 之類的路徑,這就是 Cloudflare 硬塞到你網站中的 JavaScript。
狀態檢查
你可以跳過這步驟,反正等一下就是要用命令行改掉這個設定。
進入 Cloudflare -> Domains 進入你的 domain -> 左側 Security 展開 -> 進入展開後的 Settings -> 查看 Bot fight mode
你會發現即使關閉 Bot fight mode 底下的 JS Detections 仍然是 On 且沒有關閉按鈕。
開始設定
參考這篇文章完成,該文章使用舊版認證方式,本文以新版 API 完成。
建立 API 金鑰
API 金鑰讓你透過命令行操作你的帳號,讓 Cloudflare 知道你有什麼權限進行什麼操作。
- 點右上方頭像展開 menu
- 點 menu 的 Profile 進入
- 點左側的 API Tokens
- 點右上角的
Create Token按鈕 - 選擇
Create Custom Token- Token name: Disable JSD javascriont detection
- Permissions:
- Zone - Bot Management - Edit
- Zone Resources: 預設,Include - All zones
- Continue to summary
- 測試你的 Token,就像裡面提供的指令一樣
curl "https://api.cloudflare.com/client/v4/user/tokens/verify" \ -H "Authorization: Bearer cfut_XXXXXXX"
透過 API 關閉 JSD
把 cfut_XXXXXXXXXXXXXXXXXXXXXXXX 換成你自己的 API Token,貼上以下指令:
curl https://api.cloudflare.com/client/v4/zones/2342ef70769210373204fe7615d5185e/bot_management \
-X PUT \
-H "Authorization: Bearer cfut_XXXXXXXXXXXXXXXXXXXXXXXX" \
-H "Content-Type: application/json" \
-d '{
"enable_js": false,
"fight_mode": false
}'
如果成功,Cloudflare 會回傳
{
"result": {
"enable_js": false,
"fight_mode": false,
"ai_bots_protection": "disabled",
"content_bots_protection": "disabled",
"crawler_protection": "disabled",
"ai_training": "disabled",
"ai_search": "disabled",
"ai_user": "disabled",
"is_robots_txt_managed": false,
"cf_robots_variant": "off",
"ai_bots_migration_opt_out": false,
"using_latest_model": true
},
"success": true,
"errors": [],
"messages": []
}
dashboard 顯示結果不更新是正常的,請用 F12 開發者工具檢查網路請求,沒有那些 main.js 就代表成功了,可以回去面板把這個 token 刪掉。