很多人把“蜘蛛来過”和“蜘蛛能抓到”当成一回事。投放一批URL之後,日誌里出現請求就說明有進展;但如果目标URL恰好被robots.txt挡住,日誌里可能什么都看不到。這里把两件事拆開讲清楚。
發現和抓取是两件事
發現指的是蜘蛛從某個入口拿到了這個URL,入口可以是站内連結、sitemap、接口提交,也可以是蜘蛛池投放的外鏈。抓取指的是蜘蛛真的發起請求,把頁面内容取回去。
robots.txt 的 Disallow 規則管的是第二件事,它拦不住“發現”。蜘蛛仍然可以在外鏈里看到你的URL,把它记進待抓列表,只是不去請求它。所以“被挡住等于完全没人知道”這個判断並不准确。
被 Disallow 的URL會怎样
- 新URL長期無法被抓取,内容進不了索引。
- 已经收錄的頁面通常保留之前的快照,不再更新。
- 某些情况下頁面會以“僅有連結、没有摘要”的形式留在结果里,用戶点進去仍然能訪問。
換句话说,如果你投放URL的目的是让蜘蛛抓取、推動内容更新,而 robots.txt 又禁止抓取,那么這一步基本只完成了“通知”,後面的鏈路是断的。
noindex 和 Disallow 容易互相抵消
noindex 的寫法是頁面里的 meta robots,或者响應头里的 X-Robots-Tag,它必须先被蜘蛛抓到才能生效。如果 robots.txt 同时禁止抓取這個URL,蜘蛛讀不到 noindex,頁面反而可能一直留在索引里,只是不展示摘要。
常见的處理原則可以這样记:
- 希望頁面完全不出現在结果里,優先用 noindex,並保持允许抓取。
- 不希望被抓取的内容(後台、接口、临时頁),用 robots.txt 禁止,同时別指望它還能被正常收錄。
- 想推動新URL收錄,就必须让目标路径可以被抓取。
日誌里看到請求,不一定是抓取成功
被 Disallow 的路径偶尔也會出現請求记錄,来源可能是:不遵守 robots.txt 的采集程序、被誤判的UA、或者頁面内部资源产生的請求。判断时要看請求的 UA、時間、返回狀態碼,以及對方是否先取過 /robots.txt。把這些混在一起統計,很容易得出“蜘蛛抓了很多”的错誤结论。
常见的几類配置失誤
- 測試环境的 robots.txt 带着 Disallow 上线,整站被拦。
- 規則寫得過宽,誤伤了带參數的正常頁面路径。
- 一邊寫 Disallow,一邊寫 noindex,两邊都没達到目的。
- noindex 只寫在 JS 渲染後才出現的内容里,實际返回的HTML里没有。
- X-Robots-Tag 只在部分狀態碼或部分路径下返回,漏掉了主頁面。
排查顺序建议
- 直接訪問站点的 /robots.txt,確認目标路径是否落在 Disallow 范围内。
- 用抓取測試工具模拟目标URL,看返回结果是“允许”還是“被屏蔽”。
- 抓包或看响應头,確認有没有 X-Robots-Tag。
- 查看HTML源碼里的 meta robots,而不是渲染後的DOM。
- 在日誌里按UA過滤,確認是否真的有對目标URL的請求,以及返回碼是多少。
- 確認允许抓取之後,再通過站内連結、sitemap 和投放一起推動發現。
蜘蛛池能解决的是“让蜘蛛知道有這個URL”,能不能抓到、能不能放出来,取决于 robots.txt、狀態碼、頁面内容和站点整体质量。投放前先確認目标URL是允许被抓取的,否則後面的動作大多是無效功。