蜘蛛池知识

蜘蛛池入口页的 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 是允许被抓的开关,不是保证被抓的手段。把它们放开只是必要条件,实际抓取多少还要看响应速度、内容质量、域名历史这些因素。

简单说,入口页的配置原则是:该被读到的全部放开,不该被读到的明确挡掉,剩下的交给自己去观察日志判断。