常见問题

目标 URL 被 robots.txt 屏蔽,搜尋蜘蛛還能發現它吗

robots.txt 管的是抓取,不是發現。本文說明搜尋蜘蛛通過入口頁、sitemap、URL 提交等途径获知目标 URL 的過程,分析目标 URL 被 Disallow 後蜘蛛會如何處理,並梳理 Disallow 與 noindex 的常见搭配誤区和排查顺序。

常见問题

目标 URL 被 robots.txt 屏蔽,搜尋蜘蛛還能發現它吗

很多人把 robots.txt 当成一個“連結開關”:以為只要在文件里寫下 Disallow,搜尋蜘蛛就再也看不到這個 URL。實际上,發現和抓取是两件事。robots.txt 主要约束的是抓取行為,而不是發現過程。理解這一点,才能判断当目标 URL 被屏蔽时,蜘蛛池入口頁還有多大作用。

搜尋蜘蛛是怎么“發現”一個 URL 的

搜尋蜘蛛拿到新 URL 的途径通常有這么几種:

  • 從已经抓取過的頁面里顺着超連結爬,其中就包括蜘蛛池入口頁;
  • 讀取站点自己提供的 sitemap 文件;
  • 通過搜尋平台的 URL 提交入口被主動告知;
  • 其他站点的外鏈、聚合頁、轉發内容。

這几條途径里,只有一部分會被 robots.txt 影响。sitemap 和 URL 提交本身就是主動告知,站外頁面上的連結也一样會被讀到,前提是那些頁面允许抓取。另外要注意,robots.txt 只對你自己域名下的路径生效,管不到別人頁面上的連結。

robots.txt 真正拦住的是什么

robots.txt 放在域名根目錄,作用范围是整個协议加域名。它告诉蜘蛛哪些路径不要請求。一個被 Disallow 的 URL:

  • 蜘蛛通常不會去請求頁面内容;
  • 但如果這個 URL 從別的地方被連結到,蜘蛛仍有可能知道它存在;
  • 不同搜尋引擎的處理细节不一样,有的可能只展示一個 URL,有的干脆不展示。

所以“被屏蔽”並不等于“完全不可见”。但也要清楚另一面:蜘蛛即使知道了 URL,拿不到頁面内容,就没有依據去判断這個頁面讲什么、该不该收錄。

入口頁正常、目标 URL 被屏蔽,會發生什么

如果蜘蛛池入口頁本身可以被抓取,蜘蛛顺着連結走到目标 URL 這一步是没問题的,問题出在下一步:請求被 robots.txt 拒绝,拿不到内容。常见的结果是:

  • 目标 URL 可能長期停留在“已發現但未抓取”的狀態;
  • 蜘蛛池提供的發現信号被浪費,因為你並不打算让它抓取;
  • 如果你本来希望這個 URL 被收錄,那這條配置等于自己给自己设障碍。

几個常见誤区

  • 用 Disallow 来“隐藏”頁面。更彻底的做法是让頁面返回 404 或 410,或者允许抓取但标记 noindex。
  • noindex 和 Disallow 一起用当双保險。noindex 需要蜘蛛抓到頁面才能讀到,Disallow 又让它抓不到,两者叠在一起往往達不到预期。
  • 只屏蔽某個目錄,却寫错了路径或漏了通配符。一條過宽的規則可能把整站挡掉,在測試环境和正式环境切換时尤其容易發生。

建议的排查顺序

  1. 先用搜尋平台提供的 robots.txt 測試工具,輸入目标 URL,確認是否被拦。
  2. 检查有没有寫成 Disallow: / 這類過宽的規則,或路径拼寫错誤。
  3. 明确目的:這個 URL 是要被收錄,還是不要被收錄。
  4. 要收錄:放開 robots.txt,正常做入口頁連結、提交 URL、寫進 sitemap。
  5. 不要收錄:優先允许抓取再加 noindex,或者干脆让頁面無法訪問。
  6. 翻服務器日誌,確認蜘蛛是否来過、返回了什么狀態碼,不要只靠猜测。
一句话總结:robots.txt 管的是“能不能抓”,不是“能不能被知道”。在蜘蛛池入口頁里放一個被自身 robots.txt 屏蔽的 URL,通常只是让它被看见,却不會被讀到。

那還值不值得放進蜘蛛池入口頁

大多數情况下不值得。蜘蛛池的價值在于让搜尋蜘蛛更快、更稳定地發現目标 URL,前提是這個 URL 可被抓取、有實际内容、有被收錄的理由。如果它被 robots.txt 挡住,入口頁做得再细,後面几個环节也接不上,等于把精力花在了断掉的鏈條上。唯一比較合理的例外是做抓取行為的观察測試,這时记錄日誌、看訪問频率是有意义的,但不必期待它带来收錄层面的變化。