搜索抓取

被自家防护拦下的蜘蛛:限速、验证码与 WAF 规则的常见误伤

蜘蛛抓取异常有时不是内容问题,而是自家防护规则误伤:CC 限速、UA 黑名单、云 IP 段封锁、验证码挑战都可能把正规蜘蛛挡在门外。本文讲怎么从日志状态码和抓取量变化判断是否被拦,以及如何在不关闭防护的前提下按身份、路径和阈值做有条件放行。

搜索抓取

被自家防护拦下的蜘蛛:限速、验证码与 WAF 规则的常见误伤

被拦下的蜘蛛,看起来很像内容问题

排查抓取异常时,很多人的第一反应是页面质量、内链结构或者 Sitemap。但如果日志里搜索引擎 IP 的请求大多是 403、429、503,或者返回体只有几百字节的一段拦截提示,那问题不在内容,而在防护规则。蜘蛛拿到的是「请稍后再试」,自然不会继续往下走。

这类误伤常出现在站点刚上线、刚迁移或刚调整防护策略之后。站长自己用浏览器访问一切正常,因为浏览器带着真实 Cookie、执行了 JS、也没有触发频率阈值。

常见的几种误伤来源

  • 频率限制过严:CC 防护按 IP 或会话统计单位时间请求数,蜘蛛短时间内集中抓取一批 URL,很容易撞线。
  • UA 黑名单写得太粗:用关键词匹配 UA,把包含 bot、spider 的请求一概拦掉,正规蜘蛛也跟着中招。
  • 来源 IP 段被封:机房 IP、云服务商 IP 段被整体拉黑,而搜索蜘蛛恰恰常从这些网段发起请求。
  • JS 校验与验证码:强制跳转到验证页,蜘蛛不会替你完成验证,只会停止抓取。
  • 规则写错位置:本意是拦某个广告爬虫,结果匹配范围覆盖了整站或整类请求。

先判断是拦截还是内容问题

看状态码和响应体

在日志里筛出搜索引擎的访问,按状态码分组。403、429 集中出现在某些路径上,基本就是规则命中;503 如果只出现在对蜘蛛的请求上,也要怀疑是防护层返回的。

看抓取量的变化曲线

抓取频次不是缓慢下降,而是在某一天之后突然掉到接近零,通常对应防护策略上线的时间点。把这条时间线和操作记录对一下,比逐条翻日志更快找到原因。

放行要做对,而不是全放开

先确认身份再放行

只根据 UA 放行最省事,也最容易被冒用。更稳妥的做法是用反向 DNS 解析或者官方公布的 IP 段做匹配,确认来源确实属于对应搜索引擎,再加白名单。只认 UA 的白名单,等于给伪装者开了同一扇门。

按路径和阈值分别处理

如果只是详情页被抓得太密,可以只对内容目录降低限制,管理后台、接口路径继续严格拦。频率阈值按路径分开设置,能让抓取落在真正需要更新的页面上。

给验证码和挑战页留例外

对已确认身份的蜘蛛,跳过 JS 挑战和验证码;否则无论前面的规则多宽松,抓取都会停在那一页。

放行不等于关掉防护。目的是让可验证的抓取顺利通过,同时保留对可疑流量的限制,而不是把所有规则一次性撤销。

调整之后看什么

改完规则别只看当天数据,观察一周左右:搜索引擎 IP 的 403、429 是否减少,抓取请求是否回到正常水平,此前没被访问过的 URL 是否开始出现。同时留意有没有非搜索引擎的请求混进白名单,如果某个 IP 段放行后出现大量异常抓取,就该把范围收窄。

另外,抓取恢复不代表收录会立刻变化。防护规则只是把路打通,页面最终能不能进索引,还要看内容本身和站内结构。