蜘蛛池知识

蜘蛛池的 robots.txt 策略:哪些路径要放行,哪些该收紧

robots.txt 是蜘蛛进站先读的文件,写错一行就可能让整个池子失去作用。本文梳理蜘蛛池里该放行的入口页链路、适合收紧的无效路径,以及 Disallow 与 noindex 混用、robots.txt 返回异常等常见坑,并给出可执行的维护建议。

蜘蛛池知识

蜘蛛池的 robots.txt 策略:哪些路径要放行,哪些该收紧

robots.txt 是蜘蛛进站先读的文件,它不决定收录,但决定蜘蛛能不能读到入口页上的链接。很多池子搭好之后长时间没动静,问题往往不在链接结构,而在 robots.txt 里一行写错的 Disallow。

robots.txt 的边界:它能做和不能做的事

这个文件是爬虫协议,不是访问控制。它只对同一 host 下的路径生效,子域、其他域名各自独立;它挡不住普通访客,也挡不住不守规矩的采集程序。想把某些页面排除在索引之外,正确做法是让页面可被抓取、再返回 noindex,而不是用 Disallow 把它藏起来。反过来,如果 URL 被 Disallow 了,蜘蛛读不到页面上的 noindex 标签,页面仍有可能留在索引里,只是没有摘要。

入口页链路要一路放行

池子的作用是让蜘蛛顺着入口页走到目标页,所以从首页到目标页之间的每一环都不该被拦。检查时至少覆盖这几类路径:

  • 入口页所在的目录和首页
  • 列表、分页、归档、标签页等聚合页
  • XML 站点地图文件及其所在目录
  • CSS、JS、字体等静态资源,蜘蛛渲染页面时会取用
  • 目标页本身,以及通往目标页的跳转路径

如果入口页用了参数翻页,要特别注意别用 Disallow: /*? 这类一刀切的规则,它会把带参数的列表页和入口页一起屏蔽掉。

哪些路径适合收紧

收紧的目的是减少无效 URL 的暴露、把抓取频次留给有价值的页面,而不是把蜘蛛赶走。常见的合理对象包括:站内搜索结果页、用户中心与后台、测试目录、临时生成的重复参数页、批量下载目录。这些页面本身没有引导价值,被反复抓取只会稀释入口页的抓取频次。

抓取频率:crawl-delay 别指望太多

crawl-delay 的遵守情况各家不同,主流搜索引擎对它的支持程度有限,实际限速更依赖服务器并发能力和响应时间。与其在 robots.txt 里写一个数字,不如把 TTFB 压下来、把动态页做缓存。真正需要控制的往往是非搜索引擎的采集类爬虫,可以按 User-agent 在服务器层做限流,这属于运维范畴;而对搜索引擎返回不同内容、隐藏真实页面则属于违规做法,不建议尝试。

几个容易踩的坑

  1. 整站 Disallow。一行 Disallow: / 会让池子彻底失去作用,蜘蛛不来,入口页上的链接也没人看见。
  2. Disallow 和 noindex 混用。前文提过,被屏蔽的 URL 无法读取 noindex,容易长期滞留在索引里。
  3. robots.txt 返回 5xx 或 403。搜索引擎通常会把这种情况视为临时故障并暂缓抓取;返回 4xx 则可能被理解为站点没有限制,规则反而失效。
  4. robots.txt 返回 HTML。域名没配好时,任意路径都返回 200 加一段 HTML,爬虫解析失败,等于没有规则。
  5. 通配符支持差异。* 和 $ 的匹配规则在 Google、Bing 上支持较好,百度等引擎对复杂匹配的兼容度有限,规则写得太花容易失效。
  6. 多站点池只配了一个。每个域名、每个子域都要有自己的 robots.txt,漏配的站点等于没有约束。
  7. 改得太频繁。爬虫会缓存 robots.txt,规则变更不会立刻生效,来回改动反而让行为难以预期。

维护上的几个建议

  • 上线前用搜索引擎的抓取测试工具跑一遍关键 URL,确认入口页和目标页都是“允许抓取”。
  • 把 robots.txt 当成配置文件管理,改动留记录,方便回滚。
  • 定期翻服务器日志,如果发现被 Disallow 的路径仍有蜘蛛请求,说明规则缓存未更新或有爬虫不遵守。
  • 每隔一段时间复查一次,尤其是新增目录、改版、换域名之后。

一句话总结

robots.txt 不产生收录,也不产生排名,它只是把通道让开或者关上。对蜘蛛池来说,判断标准很简单:从首页到目标页,蜘蛛能不能一路读过去。能,就尽量少写规则;不能,先修路径,再考虑收紧。