蜘蛛進入一個站点时,通常會先請求 robots.txt,再根據規則决定哪些路径可以抓。它看起来只是一份屏蔽清單,實际也影响蜘蛛把抓取時間花在哪里。規則寫得太粗,可能把列表頁、詳情頁、静態资源甚至 sitemap 挡在门外,URL 發現路径随之變窄。
放行與拦截:常见規則的實际效果
先確認預設放行
多數站点不需要全站禁止。如果只想挡後台、搜尋结果、购物车等,可以用 Disallow 指定路径,其余保持可抓。全站 Disallow 會让蜘蛛只能看到 robots.txt 本身,後續的 URL 發現和抓取基本停止。
別誤伤抓取路径上的頁面
列表頁、分頁、标簽頁和詳情頁之間的内鏈,是蜘蛛發現新 URL 的主要通道。把 /page/、/tag/、/category/ 整体禁止,可能让蜘蛛走不到深层頁面。真正需要挡的往往是低價值參數组合,而不是整類路径。
sitemap 與静態资源要放行
Sitemap 文件本身、CSS、JS 和图片如果被 robots 挡住,會影响蜘蛛讀取頁面结构和渲染。尤其是依赖 JavaScript 的頁面,CSS/JS 被禁可能導致蜘蛛看不到其中的連結。
抓取延迟與频率控制
crawl-delay 字段的影响因蜘蛛而异,並不是所有蜘蛛都遵守。設定過大可能降低抓取频率,让新 URL 發現變慢;設定過小又未必能真正保護服務器。更稳的做法是優化服務器响應,同时用訪問日誌观察抓取峰值,而不是只依赖 crawl-delay。
規則维護與排查顺序
- 先確認 robots.txt 能正常返回 200,避免 5xx 或超时让蜘蛛進入等待。
- 检查 Disallow 路径是否誤伤了列表頁、分頁、sitemap 和静態资源。
- 用日誌確認蜘蛛實际抓了哪些路径,是否與预期一致。
- 與 sitemap、内鏈结构配合,保證重要 URL 至少有一條可抓路径。
robots.txt 是抓取入口的交通規則,不是收錄開關。放行该抓的,拦截该省的,路径才走得顺。
如果發現蜘蛛抓取量下降,可以先從 robots.txt 的變更记錄查起,再比對 sitemap 和日誌中的實际抓取路径。把規則收窄到具体目錄,保持重要入口可抓,通常比反复調整抓取频率更有效。