抓取量突然下滑时,很多人第一反应是内容质量或 Sitemap 出了问题。但如果抓取日志里集中出现 403、429、503,问题的位置往往在服务器前面的防护层。CDN 和 WAF 为了保护源站,会对高频请求做拦截,而搜索蜘蛛的抓取特征如果没被正确识别,就会和普通爬虫一起被挡在门外。
先分清是被拒绝,还是没被发现
动手改规则前,先确认日志的形态。被拦截通常表现为:同一路径在短时间内返回大量 403 或 429;不同 User-Agent 的请求都失败;响应时间极短,因为请求根本没有到达源站应用层。
如果日志里蜘蛛压根没出现,那更可能是 URL 发现、robots 规则或 Sitemap 的问题。两种情况混在一起排查,容易把安全规则改乱,反而放大风险。
常见的误伤来源
- User-Agent 白名单写得过窄,只匹配完整字符串,蜘蛛版本更新后就对不上。
- 只放行了 IPv4 段,忽略了蜘蛛的 IPv6 出口。
- 速率限制按普通用户设置,蜘蛛连续抓取时分页和静态资源一起触发限流。
- CDN 安全等级调高后,对无 Cookie、不执行 JS 的请求直接发起挑战。
- 站内搜索、筛选参数被当成攻击特征,正常抓取路径被规则命中。
这些问题往往不是一次性出现,而是在某次安全策略调整、CDN 配置变更或源站扩容之后集中暴露。
用抓取日志定位拦截点
把日志按状态码、路径、User-Agent、来源 IP 分组,看拦截是否集中在某一层。如果 CDN 日志和源站日志的状态码不一致,比如 CDN 记录 403 而源站没有对应记录,说明请求被边缘节点拦下了。如果源站记录 429,则要检查应用层或源站 WAF 的限速配置。
放行与验证的顺序
- 核对防护产品对搜索蜘蛛的官方说明,按其提供的 IP 段或验证方式配置,不要靠猜 User-Agent。
- 对搜索蜘蛛关闭 JS 挑战、验证码和浏览器指纹校验,这些机制蜘蛛通常不会执行。
- 把速率限制从全站统一改为按路径或按来源区分,给列表页和静态资源留出余量。
- 检查 CDN 与源站两层的白名单是否一致,避免只改了一层。
- 放行后不要立刻看排名,先看抓取日志中 403、429 的比例是否回落,再观察新 URL 是否重新出现在抓取记录里。
放行不等于放任。白名单和限速规则仍需要定期复核,尤其是蜘蛛 IP 段更新、CDN 产品升级之后。
拦截对 URL 发现的影响
抓取被拒绝不只是少抓几个页面。蜘蛛在连续失败后,通常会降低对该站点的抓取频次,新提交的 Sitemap、新上线的栏目页、内链新增的入口,都可能被推迟发现。所以拦截修复后,抓取覆盖的恢复往往比状态码恢复更慢一些。
日常维护建议
- 把搜索蜘蛛的抓取状态加入监控,关注状态码分布,而不只是抓取总量。
- 安全策略变更前,先在测试环境用真实抓取特征验证一遍。
- 保留一份放行规则清单,记录修改时间与原因,方便出问题时回滚。
- Sitemap 和内链入口保持稳定,减少蜘蛛在失败路径上的重复尝试。
抓取问题的排查顺序,通常是先确认进得来,再谈 URL 发现是否充分。把防护层的误伤排除掉,后面的 Sitemap、内链结构和服务器稳定性优化才有意义。