蜘蛛池知识

蜘蛛池入口页的 robots 控制:放行、屏蔽与误伤排查

入口页能不能被抓,通常不只取决于链接本身,还取决于 robots 相关配置。本文从 robots.txt、meta robots 和 X-Robots-Tag 的分工讲起,说明哪些入口页该放行、哪些该屏蔽,以及常见的误伤情况和排查顺序,帮助减少无效抓取。

蜘蛛池知识

蜘蛛池入口页的 robots 控制:放行、屏蔽与误伤排查

做蜘蛛池时,很多人把注意力放在链接怎么放、入口页怎么生成,却容易忽略一个更前置的问题:入口页本身有没有被 robots 规则挡住。链接铺得再多,如果抓取入口在协议层就被拒绝,后面的抓取、回访都无从谈起。反过来,如果该屏蔽的页面没有屏蔽,又会把有限的抓取预算引向无意义的地址。

robots.txt 与 meta robots 的分工

这两者都能影响抓取,但作用位置不同,混用容易出现预期外的结果。

  • robots.txt:放在域名根目录,控制蜘蛛能不能请求某个路径。它是访问前的拦截,被 Disallow 的 URL 通常连抓取都不会发生。
  • meta robots:写在 HTML 的 head 里,页面已经被抓取后才生效,主要影响索引和链接追踪,例如 noindex、nofollow。
  • X-Robots-Tag:通过 HTTP 响应头传递,适合非 HTML 文件,比如 PDF、图片、JS、CSS,作用类似 meta robots。

简单说,robots.txt 管能不能来,meta robots 和 X-Robots-Tag 管来了之后怎么处理。入口页大多是需要被抓取的,所以正常情况下应该保持可访问;需要控制的往往是那些重复、临时或纯参数地址。

入口页该放行还是屏蔽

判断标准不是这个页面有没有用,而是它被抓取后能不能带来有效路径。可以参考下面几类:

  • 需要放行:承载目标页链接的入口页、分页列表、标签聚合页、Sitemap 中列出的地址。
  • 考虑屏蔽:搜索结果页、筛选排序参数组合、会话 ID 地址、测试环境残留路径、大量重复的打印页。
  • 谨慎处理:带 noindex 的入口页。页面被 noindex 后,如果蜘蛛仍会抓取,链接可能继续被发现;但如果同时被 robots.txt 屏蔽,蜘蛛拿不到 noindex,反而可能以其他方式收录。
robots.txt 屏蔽和 noindex 不要同时用在一个你希望从索引中移除的地址上,这两条规则会互相抵消。

常见的误伤场景

下面几种情况在实际操作中出现频率很高,排查时可以优先看。

  1. 规则写法太宽:例如用通配符一刀切掉所有带参数的地址,结果分页、筛选页目标链接的入口也被挡。
  2. 子域或目录规则串了:入口页放在子域或子目录,robots.txt 只对当前域名根生效,跨域规则不会自动继承。
  3. 响应头里藏了 noindex:有些中间件或缓存层默认给某些路径加了 noindex 响应头,页面看着正常,实际不会被索引。
  4. 屏蔽了 CSS 或 JS:如果入口页依赖前端渲染出链接,屏蔽资源文件会让蜘蛛看到的是不完整页面。
  5. 大小写与结尾斜杠不一致:robots.txt 的路径匹配对大小写敏感,写错一个字符就可能放行本该屏蔽的地址,或挡住本该放行的地址。

排查顺序与使用建议

发现入口页抓取异常时,建议按下面顺序核对,避免一上来就改链接策略。

  1. 直接访问域名根目录的 robots.txt,确认规则是否与预期一致,特别注意通配符和结尾符号。
  2. 用抓取工具或日志确认蜘蛛实际请求的 URL,看是否与配置的入口地址一致。
  3. 检查响应头里有没有 X-Robots-Tag,再看 HTML 的 meta robots。
  4. 确认入口页依赖的静态资源没有被规则挡住。
  5. 如果是 CDN 或反向代理,注意缓存是否把旧的响应头一起缓存了,改完规则后需要刷新。

最后提醒一点:robots 控制解决的是抓不抓、索引不索引的问题,它不会直接决定抓取量多少,也不影响页面本身的质量。入口页该放行的放行,该收敛的收敛,把规则写清楚,比反复堆链接更省事。