蜘蛛池知识

蜘蛛池入口页的 robots 配置:放行、拦截与常见误伤

robots.txt 看起来只是几行配置,却常常成为蜘蛛池入口页抓取失败的原因之一。本文说明它在站群里的作用、Allow 与 Disallow 的匹配差异、meta robots 与 X-Robots-Tag 的分工,以及批量生成站群时容易踩的几个坑,并给出一份可以逐条执行的检查清单。

蜘蛛池知识

蜘蛛池入口页的 robots 配置:放行、拦截与常见误伤

很多做蜘蛛池的人把精力全放在入口页本身,却很少回头看一眼根目录那个只有几行字的文件。robots.txt 不决定页面能否被收录,但它决定了蜘蛛愿不愿意继续在你的站群里走。配得合理,抓取会集中在你希望被看到的入口页;配得随意,蜘蛛可能连门都进不来,或者一进来就钻进一堆无意义的路径里。

robots.txt 在站群里承担什么角色

它是一个约定,而不是强制。不同搜索引擎的蜘蛛遵守程度不一样,但主流搜索蜘蛛基本都会读。在站群场景下,它主要做三件事:告诉蜘蛛哪些路径不必抓、通过 Sitemap 指令给蜘蛛指路、在少数蜘蛛那里影响抓取节奏。

麻烦在于,站群通常是同一套程序批量生成的。模板自带的 robots.txt 往往是从别处拷来的,可能整站 Disallow,也可能把带参数的路径全部禁掉。没人检查的话,入口页会长期处在一种尴尬状态:域名存在,蜘蛛也知道,但文件里写着别抓。

几行常见配置的实际影响

全站 Disallow

Disallow: / 是最省事的写法,也最常见于测试环境的遗留配置。后果有两层:蜘蛛不会抓入口页;如果页面同时用了 noindex,那个 noindex 也不会生效,因为蜘蛛根本看不到它。想让一个页面彻底消失,反而要先允许抓取。

Allow 与 Disallow 的匹配规则

Google 采用最长匹配优先,其他蜘蛛未必一致。常见的坑是写了 Disallow: /tag/ 又想用 Allow: /tag/abc 放行,在不同蜘蛛那里结果可能完全不同。与其纠结优先级,不如把要拦的路径写得尽量明确,少用前后都粘连的前缀。

Crawl-delay

只有部分蜘蛛认这个指令,Bing 认,Google 早就不认了。指望靠它给蜘蛛限速并不可靠,真正管用的还是服务器层的限流以及入口页本身的响应能力。

Sitemap 指令

这是 robots.txt 里少数能带来正向作用的行。写上 Sitemap: https://域名/sitemap.xml,前提是那个地址真的能打开、内容真实存在。指向一个返回 404 的 sitemap,等于给蜘蛛发了一张废票。

meta robots 与 X-Robots-Tag

robots.txt 管的是能不能抓,meta robots 管的是抓到之后要不要索引,两者不能互相替代。需要页面不被索引但仍希望被抓到时,用 noindex;需要整个目录都不被抓取时,用 robots.txt。混着用很容易出现既不收录、也不消失的尴尬局面。

X-Robots-Tag 放在 HTTP 响应头里,适合 PDF、图片这类没有 head 区域的资源。它和 meta 一样,都需要蜘蛛真正抓到这次请求才能生效。

入口页常见的几个误区

  • 以为 robots.txt 全放行就万事大吉。放行只是不拦,并不代表蜘蛛会来,也不代表页面值得被索引。
  • 用 robots.txt 代替去索引。被 Disallow 的页面蜘蛛看不到 noindex,反而可能以只有标题和 URL 的形式出现在结果里。
  • 从别的站直接拷贝 robots.txt。路径结构不一样,禁用规则很可能误伤自己的入口页。
  • 拦掉 CSS 和 JS。现在的蜘蛛普遍会渲染页面,拦掉这两类资源会让它看到的版面和用户看到的完全不同。
  • 泛解析域名下没有单独处理 robots.txt。所有子域返回同一份内容或同一个页面,容易让蜘蛛反复抓取同一段文本。

落地时可以做的几件事

  1. 挨个访问每个入口站的 /robots.txt,确认状态码和返回内容,而不是只看本地的静态文件。
  2. 默认放行入口页,只拦确实无意义的路径,比如后台、站内搜索结果页、参数无限的筛选组合。
  3. 要控制索引就用 noindex,不要用 Disallow 来替代,两者的生效条件完全不同。
  4. Sitemap 指令指向真实可访问、并且会定期更新的 sitemap 地址。
  5. 换模板、换程序、批量改配置之后,把 robots 检查放进回归清单里,别让它成为改动后的盲区。
robots.txt 更像一个开关,而不是优化手段。它的价值在于别造成误伤,而不是靠它把蜘蛛请进来。