常见问题

入口页被 CDN 或 WAF 误拦:搜索蜘蛛抓不到时的排查顺序

入口页布好链接却迟迟没有抓取记录,有时不是链接问题,而是请求在 CDN 或 WAF 层就被拦掉了。本文整理常见的拦截形态、从日志到抓取工具的排查顺序,以及放行蜘蛛时的取舍,帮助你判断问题出在发现环节还是拦截环节。

常见问题

入口页被 CDN 或 WAF 误拦:搜索蜘蛛抓不到时的排查顺序

入口页搭好、链接也放上去了,搜索蜘蛛却像没来过一样,很多人第一反应是“链接不行”或“蜘蛛池没效果”。实际排查中,有一个常见但容易被忽略的环节:请求在到达源站之前,就被 CDN 或 WAF 拦掉了。蜘蛛看到的可能不是你的页面,而是一张验证码、一个 403,或者一段需要执行 JavaScript 才能通过的挑战页。

先分清两种“抓不到”

一种是蜘蛛压根没发起请求,另一种是发起了请求但没拿到正常内容。前者要看入口页有没有被正常发现、链接是否可提取;后者才和 CDN、WAF 有关。判断方法很简单:看源站的访问日志里有没有搜索蜘蛛的 UA 和对应 IP 记录。如果日志里完全空白,问题多半在发现环节;如果日志里有记录但状态码是 403、406、429,或者响应体是挑战页,就属于拦截问题。

常见的拦截形态

  • 状态码拦截:直接返回 403、406、429,源站日志可能只留下很少的记录,甚至因为 CDN 缓存了拦截结果而完全没有回源日志。
  • 验证码或人机校验页:返回 200,但内容是“请完成验证”,蜘蛛拿到的是一段无意义 HTML,也就无法提取里面的链接。
  • JS 挑战:页面先返回一段脚本,校验通过后才跳转到真实内容。搜索引擎对这一步的处理能力有限,尤其是入口页这种本身不靠渲染出内容的页面。
  • 地域或 IP 限制:蜘蛛的出口 IP 和你预期的访客地区不一致,被规则直接拒绝。
  • 频率限制:短时间抓取多个入口页触发限流,表现为前面正常、后面开始 429。

按顺序排查

  1. 查源站访问日志,确认是否有蜘蛛请求、状态码分布和响应时间。
  2. 看 CDN 或 WAF 的拦截日志,筛选蜘蛛 UA 和对应 IP 段,确认命中哪条规则。
  3. 用搜索引擎官方提供的抓取测试或 URL 检查工具,看它们返回的响应码和页面内容。
  4. 用命令行带蜘蛛 UA 请求入口页,对比正常浏览器 UA 的返回结果,重点看状态码和正文长度。
  5. 确认 robots.txt、sitemap 这些文件本身没有被误拦,否则会连带影响发现和抓取。

放行时的取舍

不建议为了放行蜘蛛而全局关闭防护。更稳妥的做法是:把搜索引擎官方公布的 IP 段加入白名单,只对这些来源跳过人机校验和部分频率限制,同时保留对页面的基础防护。UA 字段可以伪造,只按 UA 放行并不安全,能配合 IP 校验会更好一些。

另外要区分页面和接口。入口页本身通常是静态 HTML,不需要复杂的风控;真正需要严格校验的往往是登录、提交、搜索接口。把两者混在同一条规则里,就容易出现“接口防住了,页面也被防住了”的情况。

放行后怎么反向验证

调整规则后不要只看一次结果。观察一段时间内入口页的日志:蜘蛛请求数量是否稳定出现、状态码是否以 200 为主、是否还会间歇出现 429。如果状态码正常但链接仍不被跟进,问题就转移到链接结构、内容质量或目标页本身,需要换一条排查线。

CDN/WAF 拦截只是众多卡点之一。它造成的现象是“蜘蛛像没来过”,而链接提取、目标页质量等问题造成的现象更接近“来了但不跟进”,排查时先看日志能少走很多弯路。