只補全省略的部分:協議默認 https,路徑一律換成根目錄的 robots.txt。
抓取通道:默認走本站的同源轉發(nginx 只把請求變成 https://目標域名/robots.txt 這一個地址),拿不到再試瀏覽器直連,最後才降級到公開的第三方中繼。結果區會寫明這次到底是哪條通道響應的。
抓取通道嘗試記錄
分組明細
連續的 User-agent 行共用後面那批規則;每一組單獨列出它的 Allow / Disallow / Crawl-delay 與其它指令。
Sitemap 登記
Sitemap 指令與分組無關,爬蟲在文件任意位置聲明的地址都會被收錄到這裏。
這份 robots.txt 沒有聲明任何 Sitemap。
路徑放行判定
填一個路徑和一個爬蟲名,按標準規則(最長匹配優先、同長度 Allow 優先、找不到專屬分組就落到 * 分組)給出結論,並說明是哪一條規則命中的。
還沒有檢測結果,先在上面檢測一個站點,判定才會用到它的規則。
語法與 SEO 體檢
按各爬蟲的實際處理方式檢查寫法:缺前導斜槓、空的 Disallow、寫在任何 User-agent 之前的指令、未編碼的非 ASCII 路徑、超長行、超大文件、重複或互相衝突的規則、爬蟲不支持的 noindex。
原文預覽
狀態碼語義
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@ 憑據在歸一化階段就被丟掉,不會進入請求。所以這不是一個「完全本地離線」的工具,但它不需要任何第三方服務就能工作。
功能
- 地址自動歸一example.com、https://example.com/deep/path?x=1、甚至帶 user:pass@ 的寫法都能吃進來,統一成 https://example.com/robots.txt;只允許 http 與 https 兩種協議。
- 按 RFC 9309 分組解析去掉 BOM、CRLF 與 # 註釋,指令名大小寫不敏感;連續的 User-agent 行合併成一組,Allow / Disallow / Crawl-delay / Sitemap 與未知指令分別歸類,未知指令保留原文。
- 路徑放行判定器支持 * 通配與 $ 結尾錨定,按最長匹配優先、同長度 Allow 優先取規則,空的 Disallow: 視為整組放行,找不到分組就按放行;結論下面一行說明命中了哪條規則、為什麼。
- 語法與 SEO 體檢缺前導斜槓、指令寫在 User-agent 之前、路徑裏有未編碼的非 ASCII 字符、單行超過 500 字符會被截斷、文件超過 500KB 爬蟲只讀前一段、重複或互相衝突的規則、以及爬蟲根本不支持的 noindex。
- 抓取通道如實標註本站轉發優先、失敗再降級到直連與公共中繼,來源、HTTP 狀態碼、字節數、行數與耗時全部列出來,逐通道的嘗試記錄可以展開查看,方便判斷是目標站的問題還是通道的問題。
- 帶行號的原文與體檢對照原文按行號顯示並對指令名、值與註釋做了輕量高亮,所有抓取內容都經過轉義才寫進頁面;可一鍵複製原文或下載成 .txt,界面提供簡體、繁體與 English 三套。
怎麼用
- 輸入域名或任意網址(粘整條帶路徑的連結也行),點「檢測 robots.txt」,或直接點一個快捷樣例。
- 先看概況與統計卡:來源通道、HTTP 狀態、分組數、規則數、Sitemap 數與總體結論;概況下面的「抓取通道嘗試記錄」能告訴你直連是不是被擋了。
- 在「路徑放行判定」裏填一個你關心的路徑與爬蟲名,例如 /wp-admin/ 與 Googlebot,看結論與命中的規則。
- 按「語法與 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 是典型的隱形事故。檢測完記得把狀態碼和來源通道一起看。
站內其他工具
解析與判定全部在瀏覽器完成 · 免費 · 支持中/繁/英