蜘蛛池知识

蜘蛛池入口頁的 robots 設定:哪些该放行,哪些该挡住

robots.txt、meta robots 和 X-Robots-Tag 是蜘蛛池里最容易被忽略的一环。入口頁被誤挡會直接断掉抓取通道,nofollow 又會切断頁面上連結的跟随。本文把三個层級的設定分開讲,說明入口頁、目标頁與资源文件分別该怎么配置,並给出一套可落地的排查顺序。

蜘蛛池知识

蜘蛛池入口頁的 robots 設定:哪些该放行,哪些该挡住

做蜘蛛池的时候,大家往往把精力放在入口頁數量、域名和服務器上,却容易忽略一個很小的文件:robots.txt,以及頁面里的 meta robots。它們本身不产生流量,但一旦配置错了,蜘蛛可能连门都進不来,或者進来之後不跟着連結走。這篇文章把入口頁、目标頁和资源文件這三類對象该放行還是该挡住,分開讲清楚。

先分清三個层級的“禁入指令”

同一個“別抓我”的意图,可以用三種方式表達,作用的范围不一样:

  • robots.txt:放在域名根目錄,是站点級协议,蜘蛛抓取任何 URL 前一般會先讀它。寫错一條通配符,可能整站被挡。
  • meta robots:寫在 HTML 的 head 里,只作用于目前頁面,可以带 noindex、nofollow、noarchive 等參數。
  • X-Robots-Tag:通過 HTTP 响應头下發,适合 PDF、图片等非 HTML 资源,也适合由服務器统一批量控制。

三者冲突时,通常按更嚴格的一條执行。也就是说,只要有一處寫了禁止,蜘蛛一般就按禁止處理,不會帮你“擇優”。

入口頁该放行什么,该挡住什么

入口頁存在的意义是被發現、被抓取、被跟随連結。所以對蜘蛛池的入口頁来说,最基本的配置是:

  • robots.txt 里不要對入口頁所在目錄寫全站 Disallow;
  • 不要给入口頁加 nofollow,否則頁面里的連結不會被跟随,目标頁也就到不了;
  • 如果入口頁只是通道、不希望它自己出現在结果里,可以用 noindex,但要注意 noindex 不影响抓取和連結跟随,蜘蛛仍然會訪問它並顺着連結走;
  • 需要蜘蛛渲染的 CSS、JS 文件不要被 robots.txt 挡住,否則渲染出来的頁面可能残缺。

常见的誤区是把 noindex 和 nofollow 当成一回事。前者影响是否保留在索引里,後者影响是否跟随頁面上的連結。對蜘蛛池来说,真正致命的是 nofollow 和 robots.txt 的全站禁止。

目标頁的 robots 要注意什么

目标頁是你希望蜘蛛最终到達的地方。如果目标頁自己被 noindex 或者被 robots.txt 挡住,入口頁做得再顺手,也只是把蜘蛛送到了一個死胡同。建议定期抽查:

  • 目标頁是否返回 200,而不是 301 到別處或 403;
  • 目标頁的 meta robots 是否含 noindex;
  • 目标頁是否有登入墙、驗證碼或地区限制,導致蜘蛛拿到的是拦截頁而不是内容。

几個容易被忽略的细节

批量铺入口頁时,最常出問题的不是寫得不對,而是模板複製时把別處的 robots.txt 一起带了過来。
  • 通配符與结尾斜杠:Disallow: /tmp 和 Disallow: /tmp/ 的含义不同,前者會连带挡住 /tmpabc 這類路径。
  • 大小寫敏感:路径部分通常区分大小寫,別凭感觉寫。
  • 多域名、多协议:http 與 https、主域名與子域名的 robots.txt 各自獨立,改了一個不代表另一個也改了。
  • Sitemap 声明:如果 robots.txt 里寫了 Sitemap 地址,確認它能正常打開,別寫成一個 404。
  • 缓存:robots.txt 有缓存周期,改完不要指望立刻生效,看日誌时要把這段時間算進去。

排查顺序建议

  1. 用命令行或浏览器直接訪問域名根目錄的 robots.txt,確認返回 200、内容完整、没有多余的 Disallow。
  2. 用搜尋引擎官方提供的 robots 測試工具,模拟某個入口頁 URL,看是否被允许抓取。
  3. 查看入口頁响應头里是否带 X-Robots-Tag,再看 HTML 源碼里的 meta robots。
  4. 去訪問日誌里核對:蜘蛛是否真的抓了入口頁,有没有顺着頁面上的連結訪問目标頁。只有入口頁訪問记錄、没有目标頁记錄,通常說明連結没被跟随。

整理下来其實就一句话:入口頁要允许抓取和跟随,目标頁要能被正常訪問,中間的资源文件不要誤挡。配置完先拿少量入口頁跑一轮,確認蜘蛛能走完“入口頁—連結—目标頁”這條路径,再考虑扩大規模。具体效果受内容质量、站点狀態與竞争环境等多方面影响,robots 只是把通道打開,並不保證蜘蛛一定常来。