蜘蛛池知识

蜘蛛池里的 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 纳入入口页上线流程的一部分,和状态码、跳转方式一起检查。对蜘蛛池这种多域名、多目录的结构,建议统一一份规则模板,只在确有差异的地方做局部调整,减少配置漂移。每次改动都留一条记录,说明改了哪条规则、为什么改、什么时候恢复。这样等抓取数据出现波动时,你能更快判断是资源问题,还是自己动了门。