蜘蛛池知识

蜘蛛池入口頁的 robots 與 meta 指令:哪些该開放、哪些该屏蔽

蜘蛛池入口頁抓不到、抓不全,很多时候不是服務器問题,而是 robots.txt 或 meta robots 寫错了。本文梳理入口頁该開放的路径、该屏蔽的内容,以及 noindex、nofollow、X-Robots-Tag 的适用场景,並给出一份上线前的检查顺序。

蜘蛛池知识

蜘蛛池入口頁的 robots 與 meta 指令:哪些该開放、哪些该屏蔽

蜘蛛池跑不起来,很多人第一反應是服務器、IP、域名出了問题,但實际排查下来,相当一部分情况是 robots.txt 或 meta robots 把蜘蛛挡在门外。這两處配置看着是小事,却直接决定蜘蛛能不能讀到入口頁、能不能顺着連結繼續走。下面按實际使用场景,把该開放的、该屏蔽的理一遍。

先定位:入口頁是通道還是頁面

不同做法對索引的要求不一样。如果入口頁只承担把蜘蛛引向目标站的作用,它本身收不收錄並不是重点;如果入口頁還想有一部分聚合展示的用途,那就需要被正常索引。這個定位决定了後面 robots 和 meta 该松還是该紧。

但無论哪種定位,有一條是共通的:不能把入口頁整個屏蔽掉。屏蔽之後蜘蛛连頁面都讀不到,後面的連結發現自然無從谈起。

robots.txt:寫得越少越不容易出错

入口頁所在服務器上的 robots.txt,建议保持最小化。下面几類是實践中容易翻车的寫法:

  • Disallow: /。全站屏蔽是最常见的誤操作,有些是建站模板預設带的,上线时没人检查。
  • 整段目錄被连带屏蔽。Disallow 是按前缀匹配的,寫 Disallow: /a/ 會同时挡掉 /abc/ 這類同前缀路径,目錄命名要留個心眼。
  • 把不想公開的路径寫進去。robots.txt 是公開可讀文件,寫進去等于顺带說明了這里有什么。
  • 寫 crawl-delay。主流搜尋引擎對這個指令的支持並不一致,控制抓取节奏靠服務器响應速度和訪問日誌判断更實际。

相對稳妥的做法,是只挡掉确實不希望被抓的路径,例如後台入口、統計脚本、带參數的篩選頁、内容高度重复的列表頁。入口頁本身,以及它通向目标站連結所在的区域,都要保持開放。

如果站点本来就配了 sitemap,可以在 robots.txt 里补一行 Sitemap 地址,方便蜘蛛顺路取到,但這不是必须項,也不该指望它解决抓取問题。

meta robots:index 和 follow 要分開判断

入口頁的 meta robots 常见几種组合,含义差別不小:

  • index,follow:頁面可被索引,頁内連結可被跟随。多數入口頁用這一组就够了。
  • noindex,follow:頁面不進索引,但連結仍會被跟随。只把入口頁当作連結發現通道时可以考虑,代價是頁面本身長期没有索引记錄,蜘蛛的回訪意愿可能變低。
  • index,nofollow:頁面進索引,但頁内連結不被跟随。用在入口頁上等于切断了通向目标站的路径,通常不合适。
  • noindex,nofollow:基本等于告诉蜘蛛這頁不用看,入口頁用它没有意义。

nofollow 更适合用在頁面里那些不想让蜘蛛浪費抓取预算的連結上,比如登入、註冊、分頁尾頁、外部無關站点,而不是用在整頁級別。把 nofollow 加在整頁的 meta 上,往往會把自己最需要被跟的那几條連結一起封掉。

另外,robots.txt 屏蔽和 meta 指令是两個层面的控制,不要在同一批頁面上同时使用互相矛盾的配置。robots.txt 挡住之後,蜘蛛根本讀不到頁面的 meta,此时寫 noindex 還是 index 都没有意义。

X-Robots-Tag:头里的指令要注意位置

除了 HTML 里的 meta,响應头里的 X-Robots-Tag 也能起到同样作用,對非 HTML 文件尤其方便。但要注意它只對目前這個响應生效:如果入口頁做了跳轉,指令寫在跳轉响應和寫在最终頁面响應上,效果並不相同。排查时不要只看 HTML,也顺手看一眼返回头。

上线前的检查顺序

  1. 直接訪問域名下的 /robots.txt,確認能返回 200,没有被 CDN 或 WAF 拦成挑战頁或 403。
  2. 抓取一條入口頁,看實际返回的 meta robots 和 X-Robots-Tag,而不是看模板文件里寫了什么。
  3. 翻訪問日誌,確認蜘蛛對 robots.txt 和入口頁都有請求记錄,而不是只来取了一次 robots 就走。
  4. 抽查几條入口頁,確認通向目标站的連結是普通可跟随的 a 标簽,没有被脚本包裹或預設隐藏。
  5. 配置調整分批放,先改小部分入口頁观察几天,再决定是否铺開。
robots 和 meta 是允许被抓的開關,不是保證被抓的手段。把它們放開只是必要條件,實际抓取多少還要看响應速度、内容质量、域名歷史這些因素。

简單说,入口頁的配置原則是:该被讀到的全部放開,不该被讀到的明确挡掉,剩下的交给自己去观察日誌判断。