蜘蛛池知识

蜘蛛池里的 robots 與 meta robots:放開什么、挡住什么

蜘蛛池的 robots.txt 和 meta robots 常被随手配置,寫错一條就可能让蜘蛛连入口頁都不再請求。本文梳理入口頁的三種 robots 取向、noindex 與 nofollow 的适用场景,以及上线前後的自查顺序,帮你把抓取路径理顺。

蜘蛛池知识

蜘蛛池里的 robots 與 meta robots:放開什么、挡住什么

為什么蜘蛛池也要管 robots

很多人以為蜘蛛池的目标就是让蜘蛛多来,那 robots.txt 直接全放開就行。這個判断大体没错,但過于粗糙。robots.txt 只對遵守协议的爬虫有效,可它對抓取路径的影响是實打實的:一條寫错的 Disallow,可能让蜘蛛连入口頁都不再請求;一條多余的 noindex,可能让你搭好的入口頁從头到尾不進索引,只剩下日誌里的几條记錄。

更實际的問题是,蜘蛛池通常不是單個站,而是一批域名、一批目錄、一批參數頁。只要其中一部分配置不一致,你观察到的資料就會被污染——你以為是资源质量問题,其實只是某几個站的 robots 寫反了。

入口頁常见的三種取向

全放開:适合纯入口用途的頁面

如果這個頁面的唯一任務就是被蜘蛛發現、並把連結传出去,那么放開所有 User-agent、不设 Disallow、不加 noindex 是最简單的做法。你不用在配置上花太多心思,把精力留给内容與連結结构。

部分屏蔽:挡掉無意义的路径

典型要挡的是後台、站内搜尋结果頁、带大量參數的篩選頁,以及會生成無限组合的排序參數。這些路径被反复抓取,會挤占抓取预算,也让日誌难以分析。寫法上用 Disallow 指向具体目錄或參數特征即可,不要图省事寫成通配全站。

整站屏蔽:只在临时狀態使用

站点正在改版、迁移,或者入口頁還没准备好时,可以临时屏蔽。但要记住两件事:一是屏蔽期間蜘蛛仍可能請求 robots.txt,二是解除屏蔽後蜘蛛不會立刻恢复原有抓取节奏,需要一段時間重新观察。所以屏蔽要有明确的結束時間,別放着不管。

meta robots 與 X-Robots-Tag

robots.txt 管的是能不能抓,meta robots 管的是抓了之後怎么處理。這两個经常被混為一谈。

  • noindex:頁面可以被抓,但不要進索引。想留着入口頁传連結、又不想它出現在搜尋结果里,可以用它。
  • nofollow:不追踪頁面上的連結。對蜘蛛池来说要慎用,因為入口頁的價值恰恰在于把蜘蛛带到目标頁面,加了 nofollow 等于自断路径。
  • noarchive 與 nosnippet:影响的是摘要與快照展示,對抓取路径基本没有影响。
  • X-Robots-Tag:寫在 HTTP 响應头里,适合非 HTML 文件,比如 PDF、图片。批量處理时比逐個改 HTML 省事。

如果 robots.txt 里已经 Disallow 了某個目錄,蜘蛛根本不會抓到那個頁面,頁面里的 meta noindex 也就永遠不會被讀到。這两者叠加使用时,逻辑上要能自洽。

最容易踩的四類誤封

  • 把整站寫成 Disallow: /,然後忘记刪除。表現是日誌里只有 robots.txt 的請求,没有任何頁面抓取。
  • 規則顺序寫错,以為 Allow 寫在後面就能覆盖前面的 Disallow。實际匹配不是按你想象的優先級走的。
  • User-agent 寫错大小寫或拼寫,導致規則對目标爬虫不生效,你以為挡住了,其實一直在被抓。
  • 從舊站複製 robots.txt,把舊站的目錄路径一起带了過来,新站结构不同,規則全落空。

上线前後的自查顺序

  1. 直接訪問 域名/robots.txt,確認返回 200 且内容是目前版本,没有被缓存层返回舊文件。
  2. 检查是否存在 Disallow: / 這類整站規則,以及是否有測試遗留的屏蔽。
  3. 抽查若干個入口頁的源碼,確認 meta robots 與预期一致。
  4. 手動改 UA 請求目标路径,確認没有被服務器层拦成 403 或 503。
  5. 观察一段時間日誌,看頁面請求是否出現,而不是只有 robots.txt 被反复讀取。
robots 配置本身不會带来蜘蛛,它只决定蜘蛛進来之後能走到哪。把它当成一道门,而不是一台發動机。

几点使用建议

把 robots.txt 與 meta robots 纳入入口頁上线流程的一部分,和狀態碼、跳轉方式一起检查。對蜘蛛池這種多域名、多目錄的结构,建议统一一份規則模板,只在确有差异的地方做局部調整,减少配置漂移。每次改動都留一條记錄,說明改了哪條規則、為什么改、什么时候恢复。這样等抓取資料出現波動时,你能更快判断是资源問题,還是自己動了门。