搜索抓取

CDN 接入之后:边缘节点怎样影响蜘蛛的抓取与 URL 发现

接入 CDN 后,蜘蛛访问的其实是边缘节点,缓存策略、防护规则和回源链路任何一处出问题,都会让抓取成功率下降、新 URL 的发现节奏变慢。本文整理三类常见现象、一套排查顺序,以及配置上值得注意的几点。

搜索抓取

CDN 接入之后:边缘节点怎样影响蜘蛛的抓取与 URL 发现

很多站点在接入 CDN 之后,页面打开速度明显变快,但来自搜索蜘蛛的访问却出现波动:有时日志里突然多出一批 5xx,有时某些地区的请求直接被拒绝。抓取成功率一旦下降,受影响的不只是已经收录的页面,还在排队等待被发现的新 URL 也会被一起拖慢。

为什么 CDN 会改变蜘蛛看到的站点

蜘蛛访问的是 CDN 的边缘节点,而不是你的源站。这意味着它对站点的判断,取决于边缘节点返回了什么。节点缓存、回源策略、安全规则、地区调度,任何一层发生变化,蜘蛛拿到的响应都可能和你在浏览器里看到的不是同一份。抓取路径的中断往往不是发生在页面内部,而是发生在第一跳。

三类常见的影响

回源失败带来的 5xx

缓存未命中时,边缘节点需要回源取内容。如果源站响应慢、连接数被占满,或者回源域名解析异常,蜘蛛就会收到 5xx。连续几次失败之后,蜘蛛会降低对该目录的抓取频率,新链接被发现的节奏也会跟着变慢。

安全策略拦掉了正常请求

部分节点的防护规则会把高频、无 Cookie、不带 Referer 的请求当作异常流量,而蜘蛛的访问特征恰好符合这些条件。如果拦截规则只配置在部分节点上,你会看到一种很迷惑的现象:同一批 URL,有的节点能抓,有的节点返回 403 或 429。

缓存内容与源站不一致

缓存时间设置过长时,页面更新后蜘蛛可能仍然拿到旧版本。旧版本里的链接已经失效,蜘蛛顺着它继续走,就会走进一片 404。这不影响蜘蛛发现 URL 的能力,但会让它把抓取额度浪费在无效路径上。

排查时可以按这个顺序来

  1. 先拉一段跨度足够的访问日志,按状态码分地区统计,确认问题是全局的还是集中在少数节点。
  2. 对比同一 URL 在不同节点返回的响应头和响应体,看是否存在缓存版本差异。
  3. 检查 WAF 或防护规则里是否有针对爬虫的拦截项,确认搜索引擎的验证方式是否被正确放行。
  4. 观察回源时间曲线,找出响应明显拉长的时段,判断是否与源站压力重合。
  5. 确认 robots.txt、sitemap 这类入口文件没有被单独缓存到旧版本。

配置上值得注意的几点

  • 把 robots.txt 和 sitemap 设为较短缓存或强制回源,避免入口文件长期停留在旧状态。
  • 对搜索引擎的请求配置单独的回源策略,不要和普通用户共用一条容易被打满的通道。
  • 使用稳定的身份验证机制识别蜘蛛,而不是只靠 UA 字符串做判断。
  • 如果站点分布在多个地区,确认每个地区节点返回的内容和状态一致。
  • 在大规模上新或改版之前,先确认缓存刷新流程能覆盖到新的 URL 路径。
蜘蛛看到的站点,等于边缘节点返回的那一份。源站正常,不代表蜘蛛能正常抓到。

小结

CDN 本身不是问题,问题在于节点和源站之间那段链路是否稳定、是否一致。抓取成功率、URL 发现速度、内链路径能否走通,最终都取决于蜘蛛拿到的响应是不是完整而可预期的。定期用不同节点、绕过缓存的方式复检关键路径,比事后从日志里翻找断点要省力得多。