很多站点在接入 CDN 之後,頁面打開速度明顯變快,但来自搜尋蜘蛛的訪問却出現波動:有时日誌里突然多出一批 5xx,有时某些地区的請求直接被拒绝。抓取成功率一旦下降,受影响的不只是已经收錄的頁面,還在排队等待被發現的新 URL 也會被一起拖慢。
為什么 CDN 會改變蜘蛛看到的站点
蜘蛛訪問的是 CDN 的邊缘节点,而不是你的源站。這意味着它對站点的判断,取决于邊缘节点返回了什么。节点缓存、回源策略、安全規則、地区調度,任何一层發生變化,蜘蛛拿到的响應都可能和你在浏览器里看到的不是同一份。抓取路径的中断往往不是發生在頁面内部,而是發生在第一跳。
三類常见的影响
回源失敗带来的 5xx
缓存未命中时,邊缘节点需要回源取内容。如果源站响應慢、连接數被占满,或者回源域名解析異常,蜘蛛就會收到 5xx。连續几次失敗之後,蜘蛛會降低對该目錄的抓取频率,新連結被發現的节奏也會跟着變慢。
安全策略拦掉了正常請求
部分节点的防護規則會把高频、無 Cookie、不带 Referer 的請求当作異常流量,而蜘蛛的訪問特征恰好符合這些條件。如果拦截規則只配置在部分节点上,你會看到一種很迷惑的現象:同一批 URL,有的节点能抓,有的节点返回 403 或 429。
缓存内容與源站不一致
缓存時間設定過長时,頁面更新後蜘蛛可能仍然拿到舊版本。舊版本里的連結已经失效,蜘蛛顺着它繼續走,就會走進一片 404。這不影响蜘蛛發現 URL 的能力,但會让它把抓取額度浪費在無效路径上。
排查时可以按這個顺序来
- 先拉一段跨度足够的訪問日誌,按狀態碼分地区統計,確認問题是全局的還是集中在少數节点。
- 對比同一 URL 在不同节点返回的响應头和响應体,看是否存在缓存版本差异。
- 检查 WAF 或防護規則里是否有针對爬虫的拦截項,確認搜尋引擎的驗證方式是否被正确放行。
- 观察回源時間曲线,找出响應明顯拉長的时段,判断是否與源站压力重合。
- 確認 robots.txt、sitemap 這類入口文件没有被單獨缓存到舊版本。
配置上值得注意的几点
- 把 robots.txt 和 sitemap 设為較短缓存或强制回源,避免入口文件長期停留在舊狀態。
- 對搜尋引擎的請求配置單獨的回源策略,不要和普通用戶共用一條容易被打满的通道。
- 使用稳定的身份驗證机制识別蜘蛛,而不是只靠 UA 字符串做判断。
- 如果站点分布在多個地区,確認每個地区节点返回的内容和狀態一致。
- 在大規模上新或改版之前,先確認缓存刷新流程能覆盖到新的 URL 路径。
蜘蛛看到的站点,等于邊缘节点返回的那一份。源站正常,不代表蜘蛛能正常抓到。
小结
CDN 本身不是問题,問题在于节点和源站之間那段鏈路是否稳定、是否一致。抓取成功率、URL 發現速度、内鏈路径能否走通,最终都取决于蜘蛛拿到的响應是不是完整而可预期的。定期用不同节点、绕過缓存的方式复检關键路径,比事後從日誌里翻找断点要省力得多。