← 返回科研導航

robots.txt 檢測

分組解析 · 路徑放行判定 · 語法體檢

English 简体 繁體

只補全省略的部分:協議默認 https,路徑一律換成根目錄的 robots.txt。

快捷樣例

抓取通道:默認走本站的同源轉發(nginx 只把請求變成 https://目標域名/robots.txt 這一個地址),拿不到再試瀏覽器直連,最後才降級到公開的第三方中繼。結果區會寫明這次到底是哪條通道響應的。

路徑放行判定

填一個路徑和一個爬蟲名,按標準規則(最長匹配優先、同長度 Allow 優先、找不到專屬分組就落到 * 分組)給出結論,並說明是哪一條規則命中的。

還沒有檢測結果,先在上面檢測一個站點,判定才會用到它的規則。

狀態碼語義

robots.txt 返回的狀態碼本身就是協議的一部分:Google 會按下面這套口徑處理,5xx 時甚至會暫停對整站的抓取。

狀態碼 爬蟲的處理方式
200正常讀取文件內容;文件為空同樣視為「沒有任何限制」,全部允許抓取。
404沒有 robots.txt:整站按全部允許處理,同時爬蟲會記住這一點,不會每次都再來探。
401 / 403讀不到規則,Google 會當作「沒有文件」繼續抓取;Bing 等部分爬蟲則按全站禁爬處理。想真正攔住爬蟲要用認證或防火牆,而不是讓 robots.txt 變成 403。
5xx伺服器故障:Google 會在最長約一小時之內暫停對整站的抓取,因為它無法確認哪些路徑是被禁止的。robots.txt 掛掉但主站正常,是最容易被忽略的事故。
301 / 302跳轉到新地址後繼續讀取;跳轉到別的域名時,Google 會按跳轉後的那份規則生效(本站會把最終狀態一併顯示出來)。

這是什麼工具

RobotsCheck 抓取目標站點根目錄下的 /robots.txt,按 RFC 9309 把它解析成「User-agent 分組 + 規則」的結構:逐組列出 Disallow / Allow / Crawl-delay 與其它指令,未知的指令原樣保留;再把路徑放行判定、語法體檢和帶行號的原文放在一起。最有用的是判定器:填一個路徑和一個爬蟲名,工具按「最長匹配優先、同長度 Allow 優先、沒有專屬分組就落到 * 分組」的標準算法告訴你這條 URL 到底能不能被抓,並指名是哪一行決定的。

解析、判定、體檢全部在你的瀏覽器裏完成。抓取默認經本站一條受限的同源轉發:nginx 只允許把請求變成 https://<目標域名>/robots.txt,不接受端口、拒絕內網與元數據地址,並且關掉了訪問日誌,本站也不緩存任何檢測結果。你輸入的深層路徑、查詢參數與 user:pass@ 憑據在歸一化階段就被丟掉,不會進入請求。所以這不是一個「完全本地離線」的工具,但它不需要任何第三方服務就能工作。

功能

怎麼用

  1. 輸入域名或任意網址(粘整條帶路徑的連結也行),點「檢測 robots.txt」,或直接點一個快捷樣例。
  2. 先看概況與統計卡:來源通道、HTTP 狀態、分組數、規則數、Sitemap 數與總體結論;概況下面的「抓取通道嘗試記錄」能告訴你直連是不是被擋了。
  3. 在「路徑放行判定」裏填一個你關心的路徑與爬蟲名,例如 /wp-admin/ 與 Googlebot,看結論與命中的規則。
  4. 按「語法與 SEO 體檢」逐條修問題,改完再點原文區的「複製原文」或「下載 .txt」留檔比對。

數據來源與口徑

解析與判定口徑來自 RFC 9309(Google 於 2022 年貢獻給 IETF 的 robots.txt 規範):字段名大小寫不敏感、路徑按行長度做最長匹配、同長度時 Allow 優先、空的 Disallow 表示不限制。通配符 * 與結尾錨定 $ 是 Google 與多數主流爬蟲長期支持的擴展,本工具一併實現。Crawl-delay 只有 Bing、Yandex、Seznam 等部分爬蟲認,Google 明確忽略它;Host 是 Yandex 與百度的擴展;noindex 從來不是 robots.txt 的指令,寫在裏面不會被任何爬蟲執行。

抓取內容來自目標站點自己發布的 robots.txt,本站不緩存、不存儲任何檢測結果,轉發那條 nginx 規則關掉了訪問日誌;兜底用的公共中繼地址寫在 RobotsCheck/app.js?v=e18bb54c 頂部的 RELAYS 常量裏,改這一處即可。體檢閾值用的是公開文檔裏的數字:Google 只讀取 robots.txt 的前 500KB,單行超過 500 字符的部分會被截掉,非 ASCII 字符必須先做百分號編碼。

常見問題

為什麼不讓瀏覽器自己去抓?
同源策略不允許一個網頁讀取另一個域名的響應內容,除非對方在響應頭裏寫明允許跨域,而幾乎所有站點的 robots.txt 都沒帶這個頭。所以本工具默認請本站轉發一次(只轉發 https://<域名>/robots.txt 這一個地址,拒端口與內網地址),概況區會標出這次是哪條通道給的結果。
經本站轉發,會不會暴露我查了什麼?
轉發那條 nginx 規則關掉了訪問日誌,本站也不緩存、不存儲任何檢測結果;只有在請求真正發生的那一瞬間,伺服器上才會出現你要查的域名。你輸入的深層路徑、查詢參數與憑據在歸一化階段就被丟掉,不會離開瀏覽器。若降級到公共中繼,請求會經過第三方伺服器,那一方能看到域名 —— 但那是兜底路徑,默認用不到。
判定結果和 Google 的判斷一致嗎?
核心算法一致:最長匹配優先、同長度 Allow 優先、* 通配、$ 結尾錨定、沒有專屬分組就落到 * 分組。差別在於 Google 還會做一層 URL 歸一化(大小寫、百分號編碼等價、默認文檔 index.html 與目錄形式視為同一 URL),並對 401/403 與 5xx 有不同處理;這些情況工具會在體檢和狀態碼語義裏提示你。
在 robots.txt 裏禁爬,就能擋住爬蟲嗎?
只能擋住守規矩的爬蟲。robots.txt 是「請求許可」而不是訪問控制,不守規矩的爬蟲完全無視它,而它本身是公開可讀的,等於把你的後台路徑清單公布出去。真要限制訪問請用登錄鑒權或服務端規則。另外別指望 Disallow 能讓已收錄的頁面消失:頁面被禁止抓取後,索引裏可能仍留著一條沒有摘要的結果。
狀態碼為什麼也值得看?
因為狀態碼本身就是協議的一部分:404 或空文件等於全站放行,Google 還會緩存這個判斷;401/403 時 Google 當作沒有文件、部分爬蟲當作全站禁爬;而 5xx 會讓 Google 在最長一小時內暫停抓取整站——主站正常但 robots.txt 報 500 是典型的隱形事故。檢測完記得把狀態碼和來源通道一起看。

站內其他工具

解析與判定全部在瀏覽器完成 · 免費 · 支持中/繁/英