常见问题

入口页被 CDN 或 WAF 拦截,搜索蜘蛛还能发现里面的目标链接吗

入口页返回 403、429 或验证页时,搜索蜘蛛拿不到正常 HTML,页面里的目标链接也就无从解析。本文区分硬拦截、验证页、限速三种形态,给出日志自查和按官方 IP 段放行的处理思路,并提醒放行不等于收录。

常见问题

入口页被 CDN 或 WAF 拦截,搜索蜘蛛还能发现里面的目标链接吗

拦截发生在哪一层,先分清楚

入口页打不开,未必是服务器挂了。CDN、WAF、云防火墙、源站自己写的防护规则,都可能在搜索蜘蛛到达页面之前把请求挡掉。表现出来往往是几种固定形态:403、429,或者返回一个状态码 200、但内容是验证页或空壳的响应。对站点运营来说,先确认是谁在拦,比急着改链接更重要。

拦截对 URL 发现意味着什么

搜索蜘蛛发现新链接,主要依赖读取页面里的 a 标签。如果它拿到的是拦截页,页面中没有你希望被发现的链接,后续的解析和排队就都不会发生。损失是双份的:入口页这次抓取白跑,它承载的那一批目标 URL 也整体缺席。

三种常见拦截形态

  • 硬拦截:直接返回 403、404 或 503。蜘蛛拿不到内容,也无法解析任何链接。
  • 验证页:状态码是 200,正文却是一段 JS 挑战或“请稍候”。蜘蛛一般不会执行这类脚本,页面里没有真实链接。
  • 限速:返回 429 或直接断连。抓取成功率下降,链接时有时无,日志上看起来像“偶尔能抓”。

三种形态的后果都是链接没被发现,但处理方式不一样,混在一起排查容易走弯路。

怎么确认是不是被拦了

  1. 看日志。统计入口页对搜索蜘蛛 UA 的响应码分布,403、429 各占多少。注意 UA 字符串可以伪造,单独看 UA 容易误判。
  2. 核对来源 IP。按搜索引擎官方公布的蜘蛛 IP 段去比对访问来源,比只看 UA 可靠得多。
  3. 从外部实际请求一次入口页。观察响应头、正文长度和内容,确认返回的是正常 HTML,还是一个不含链接的挑战页。

处理思路

  • 把搜索引擎官方蜘蛛 IP 段加入 CDN 或 WAF 白名单。按 IP 放行通常比按 UA 放行稳定,因为 UA 可以随意伪造。
  • 检查规则里有没有“非浏览器 UA 一律拦截”“机房 IP 一律拦截”这类条款,它们最容易误伤搜索蜘蛛。
  • 给入口页单独配一套策略,不要和主站共用同一套严格防护规则。
  • 适当放宽入口页的速率限制,允许短时间内的连续抓取,避免批量访问被当作攻击。
  • 如果入口页必须经过验证才能访问,考虑换一个不依赖 JS 的静态页作为入口。

几个容易忽略的细节

放行只是让蜘蛛能读到页面,并不代表目标 URL 会被收录。收录还取决于内容质量、重复度、站点整体状态等很多因素,两者不要混为一谈。

另外,本地用伪装 UA 测试能通过,不等于官方蜘蛛 IP 能通;拦截解除之后,蜘蛛重新抓取还需要一段时间,日志不会立刻变好。

入口页的职责很简单:被抓取、被解析。一旦它被拦在门外,后面所有关于链接位置、锚文本、链接数量的讨论都没有落脚点。

遇到抓取异常时,先确认入口页对搜索蜘蛛返回的是不是正常页面,再去看链接层面的问题,顺序反了会浪费很多时间。