robots.txt 寫得清清楚楚 Allow: /,健檢實測卻還是被擋下來——這種「政策允許但實測被擋」不是 健檢誤判,是 robots.txt 跟真正擋下請求的東西,根本是兩層完全獨立的系統。
健檢會分兩步驟驗證每一家 AI 爬蟲:先讀 robots.txt 裡寫的規則(這是「政策」), 再真的用那家爬蟲的身分送一次請求,看看實際連不連得上(這是「實測」)。 兩者對不上,最常見的原因就是 WAF 或 CDN——robots.txt 允許,不代表請求真的能穿過站方前面那層防護。
CDN(Content Delivery Network,內容傳遞網路)是把你的網站內容快取到全球多個節點的服務, 主要目的是加速與分流,例如 Cloudflare、Akamai、Fastly。
WAF(Web Application Firewall,網頁應用防火牆)則是架在你的伺服器前面的一層過濾器, 專門判斷進來的流量像不像正常訪客——請求頻率太高、User-Agent 可疑、沒有瀏覽器該有的行為特徵, 都可能被直接擋下來,回一個 403 或挑戰頁。多數 CDN 廠商會把 WAF/Bot 防護當附加功能一起賣, 所以這兩個名詞常常一起出現、指的也常是同一家廠商(例如 Cloudflare 本身就同時是 CDN 也是 WAF)。
robots.txt 是一份寫給爬蟲看的「君子協定」——內容是純文字規則,願不願意遵守,全靠對方自律。 正派的 AI 爬蟲會先讀這份文件,讀到 Allow 才會繼續請求頁面。但 WAF/CDN 不是協定,是強制的網路層關卡: 請求要先通過它的規則判斷,才會真的送到你的網站程式碼——判斷過程完全不會去看你的 robots.txt 寫了什麼, 兩邊是各自獨立運作的系統。也因為這樣,「robots.txt 允許」只代表你願意讓這家爬蟲進來, 不保證前面那層防護真的會放行它。
後台設定的位置依廠商而不同——Cloudflare 是 Security → Bots,Akamai 是 Bot Manager/Kona Site Defender,Imperva 是 Bot Access Control。多數主流 AI 爬蟲(GPTBot、ClaudeBot、 PerplexityBot 等)都有官方公告的 User-Agent 字串,部分也公告固定來源 IP 段, 放行的時候優先用官方清單,不要只靠字串比對,避免有心人士假冒 User-Agent 繞過其他防護。
回到 健檢 重跑一次,這一項應該從 政策允許但實測被擋 變成 可存取。
(這個狀況跟「⚪ 無法判定」不是同一回事:無法判定是連 robots.txt 本身都讀不到, 這裡是 robots.txt 讀得到、也寫了允許,卡在後面那一層。無法判定的情況見 「健檢顯示「無法判定」,是防火牆擋住了嗎?」那篇。)