蜘蛛池知识

蜘蛛池入口页的 robots 设置:哪些该放行,哪些该挡住

robots.txt、meta robots 和 X-Robots-Tag 是蜘蛛池里最容易被忽略的一环。入口页被误挡会直接断掉抓取通道,nofollow 又会切断页面上链接的跟随。本文把三个层级的设置分开讲,说明入口页、目标页与资源文件分别该怎么配置,并给出一套可落地的排查顺序。

蜘蛛池知识

蜘蛛池入口页的 robots 设置:哪些该放行,哪些该挡住

做蜘蛛池的时候,大家往往把精力放在入口页数量、域名和服务器上,却容易忽略一个很小的文件:robots.txt,以及页面里的 meta robots。它们本身不产生流量,但一旦配置错了,蜘蛛可能连门都进不来,或者进来之后不跟着链接走。这篇文章把入口页、目标页和资源文件这三类对象该放行还是该挡住,分开讲清楚。

先分清三个层级的“禁入指令”

同一个“别抓我”的意图,可以用三种方式表达,作用的范围不一样:

  • robots.txt:放在域名根目录,是站点级协议,蜘蛛抓取任何 URL 前一般会先读它。写错一条通配符,可能整站被挡。
  • meta robots:写在 HTML 的 head 里,只作用于当前页面,可以带 noindex、nofollow、noarchive 等参数。
  • X-Robots-Tag:通过 HTTP 响应头下发,适合 PDF、图片等非 HTML 资源,也适合由服务器统一批量控制。

三者冲突时,通常按更严格的一条执行。也就是说,只要有一处写了禁止,蜘蛛一般就按禁止处理,不会帮你“择优”。

入口页该放行什么,该挡住什么

入口页存在的意义是被发现、被抓取、被跟随链接。所以对蜘蛛池的入口页来说,最基本的配置是:

  • robots.txt 里不要对入口页所在目录写全站 Disallow;
  • 不要给入口页加 nofollow,否则页面里的链接不会被跟随,目标页也就到不了;
  • 如果入口页只是通道、不希望它自己出现在结果里,可以用 noindex,但要注意 noindex 不影响抓取和链接跟随,蜘蛛仍然会访问它并顺着链接走;
  • 需要蜘蛛渲染的 CSS、JS 文件不要被 robots.txt 挡住,否则渲染出来的页面可能残缺。

常见的误区是把 noindex 和 nofollow 当成一回事。前者影响是否保留在索引里,后者影响是否跟随页面上的链接。对蜘蛛池来说,真正致命的是 nofollow 和 robots.txt 的全站禁止。

目标页的 robots 要注意什么

目标页是你希望蜘蛛最终到达的地方。如果目标页自己被 noindex 或者被 robots.txt 挡住,入口页做得再顺手,也只是把蜘蛛送到了一个死胡同。建议定期抽查:

  • 目标页是否返回 200,而不是 301 到别处或 403;
  • 目标页的 meta robots 是否含 noindex;
  • 目标页是否有登录墙、验证码或地区限制,导致蜘蛛拿到的是拦截页而不是内容。

几个容易被忽略的细节

批量铺入口页时,最常出问题的不是写得不对,而是模板复制时把别处的 robots.txt 一起带了过来。
  • 通配符与结尾斜杠:Disallow: /tmp 和 Disallow: /tmp/ 的含义不同,前者会连带挡住 /tmpabc 这类路径。
  • 大小写敏感:路径部分通常区分大小写,别凭感觉写。
  • 多域名、多协议:http 与 https、主域名与子域名的 robots.txt 各自独立,改了一个不代表另一个也改了。
  • Sitemap 声明:如果 robots.txt 里写了 Sitemap 地址,确认它能正常打开,别写成一个 404。
  • 缓存:robots.txt 有缓存周期,改完不要指望立刻生效,看日志时要把这段时间算进去。

排查顺序建议

  1. 用命令行或浏览器直接访问域名根目录的 robots.txt,确认返回 200、内容完整、没有多余的 Disallow。
  2. 用搜索引擎官方提供的 robots 测试工具,模拟某个入口页 URL,看是否被允许抓取。
  3. 查看入口页响应头里是否带 X-Robots-Tag,再看 HTML 源码里的 meta robots。
  4. 去访问日志里核对:蜘蛛是否真的抓了入口页,有没有顺着页面上的链接访问目标页。只有入口页访问记录、没有目标页记录,通常说明链接没被跟随。

整理下来其实就一句话:入口页要允许抓取和跟随,目标页要能被正常访问,中间的资源文件不要误挡。配置完先拿少量入口页跑一轮,确认蜘蛛能走完“入口页—链接—目标页”这条路径,再考虑扩大规模。具体效果受内容质量、站点状态与竞争环境等多方面影响,robots 只是把通道打开,并不保证蜘蛛一定常来。