网站收录

蜘蛛被 WAF 挡在门外:抓取失败如何被误判成收录问题

收录下滑时,很多人先怀疑内容质量或 canonical,却忽略了请求可能在到达源站前就被 WAF、CDN 或防火墙拦下。本文讲清拦截在日志里的常见特征、如何用官方 IP 校验区分真蜘蛛与伪造 UA,以及放行、限速和复核的处理顺序。

网站收录

蜘蛛被 WAF 挡在门外:抓取失败如何被误判成收录问题

收录下滑,很多人第一反应是内容质量、canonical 或者 sitemap。但有一类情况常被忽略:蜘蛛确实来过,请求却在到达页面之前就被拦住了。源站日志里看不到它,抓取统计里却写着失败,于是问题被误判成内容不被收录。

被拦的请求,在日志里长什么样

如果只看源站访问日志,被 WAF 或 CDN 挡掉的请求根本不会出现,容易得出蜘蛛没来的结论。换个位置看,特征其实比较集中:

  • 状态码异常:403、429、503 反复出现,或者返回 302 跳到验证页;
  • 返回 200 但内容是挑战页:比如一段 JS 校验、验证码页面,蜘蛛拿到的是空壳;
  • 抓取频次突然降到很低:不是蜘蛛不来了,而是来一次被拒一次,频次自然被压低;
  • 渲染阶段失败:首屏 HTML 能拿到,但渲染代理的请求被单独拦截。

这些情况都指向同一件事:抓取通道不通。抓取和收录是两回事,抓不到内容的页面,后面索引评估也无从谈起。

常见的拦截来源

WAF 规则误伤

一些规则会针对路径里的特殊字符、长参数、高频访问做拦截。列表页、筛选页、站内搜索这类 URL 很容易踩中,恰好也是收录问题高发的页面类型。

CDN 的机器人与区域策略

部分 CDN 默认开启 Bot 管理,规则写得粗就会把搜索引擎一起挡掉。区域限制、防盗链、频率限制也可能波及搜索蜘蛛。

服务器层面的封禁

fail2ban、自写脚本、按 UA 黑名单屏蔽,都可能把合法爬虫写入封禁列表。这类封禁往往是一次触发、长期生效,日志里只剩沉默。

先确认是不是误拦

  1. 用搜索平台的抓取统计或 URL 检查工具,看它返回的状态码和抓取时间,而不是只盯着自己的服务器日志;
  2. 对照官方公布的 IP 段或反向 DNS 结果,验证请求是否真的来自搜索引擎;
  3. 用不同 UA 请求同一 URL,观察响应差异,区分是内容问题还是策略问题;
  4. 把 CDN 边缘日志和源站日志放在一起看,缺口往往就是被拦的部分。
放行要基于 IP 验证,不要只看 User-Agent。UA 可以随便伪造,只凭 UA 放行等于自己开了个口子。

处理顺序:先通,再谈质量

确认误拦之后,按下面的顺序处理会更稳:

  • 放行已验证的搜索引擎来源,包括正常抓取和渲染请求;
  • 检查 WAF 规则中针对参数、路径和频率的条目,缩小误伤范围;
  • 对 429、503 这类限速响应,设置合理的重试与配额,而不是长期封禁;
  • 涉及 JS 挑战或验证码的页面,为搜索引擎提供可绕过的通道,否则蜘蛛永远拿不到正文;
  • 改动后观察一段时间,看抓取频次和状态码是否回到正常区间。

收录问题排查时,建议先把抓取通道确认一遍,再去看内容、重复和 URL 规范。顺序反了,很容易在内容层面反复调整,却始终绕不开那个被拦在门外的请求。