蜘蛛来訪量突然下降,服務器监控却一切正常——這類情况里,相当一部分原因不在站点本身,而是請求在到達服務器之前就被 CDN 或 WAF 拦掉了。站長在日誌里看到的可能是 403、429,也可能什么都看不到,因為請求在邊缘节点就已经結束。
先分清拦截發生在哪一层
一個請求從蜘蛛發出到你的源站,大致會经過 DNS、CDN 邊缘节点、WAF 規則、限流模块,最後才到 Web 服務器。任何一层返回 403 或 429,源站日誌里通常都不會留下记錄。所以第一步不是改代碼,而是確認日誌的覆盖范围:源站日誌、CDN 日誌、WAF 拦截日誌要能對應得上。
三類最常见的誤拦
1. WAF 規則命中
带參數的 URL 最容易触發規則,比如查询串里出現 select、union 之類的關鍵詞,或连續的特殊符号。蜘蛛抓取這些 URL 时,請求會被当成攻击直接拦下。
2. 频率限制過嚴
有些限流按 IP 計數,阈值设得很低。蜘蛛一般從多個 IP 分散抓取,但在同一時間對同一目錄的請求仍可能集中出現,從而触發 429。
3. 节点或地域策略
部分 CDN 預設屏蔽机房 IP 段,或者對某些地域做了拦截。蜘蛛的出口 IP 属于資料中心,很容易被一並處理掉。
排查顺序
- 在日誌里按狀態碼分组,看 403、429 的占比和出現時間,確認是持續存在還是短时突發。
- 反查這些 IP 的归属,和搜尋引擎官方公布的 IP 段比對,不要只依赖 UA,UA 是很容易被伪造的。
- 打開 WAF 與限流模块的拦截记錄,看被拦的 URL 有什么共同点,是路径、參數還是訪問频率。
- 临时把確認過的 IP 段加入白名單,观察抓取是否恢复,再决定長期規則怎么寫。
- 把结论固化下来:白名單定期更新,限流對蜘蛛單獨设一個阈值。
容易被忽略的两個连带問题
- robots.txt 或 Sitemap 被拦:這两個文件如果返回 403,蜘蛛讀不到規則或 URL 清單,後續的判断都會走偏。
- CSS、JS 等静態资源被拦:资源加载失敗會影响頁面解析和連結提取,表現出来却像是内容层面的問题。
排查抓取異常时,先確認請求有没有真正到達源站,再谈頁面和内容层面的優化。
白名單怎么维護更稳妥
搜尋引擎會公布各产品的 IP 段,建议按官方来源定期同步,而不是手工维護零散 IP。放行方式最好是按 IP 段和按路径组合:對 robots.txt、Sitemap、詳情頁放行,對後台、登入、站内搜尋接口繼續嚴格拦截。
限流方面,可以给已驗證的蜘蛛 IP 單獨设一個較宽松的阈值,同时保留峰值保護,避免抓取把带宽占满、影响真實用戶。
恢复之後的观察
解封不代表抓取立刻回到原来的量級,蜘蛛的抓取节奏會受歷史响應质量影响,恢复往往需要一段時間。這段時間里可以持續观察日誌中蜘蛛的訪問频次、狀態碼分布,以及新 URL 被發現的速度,再判断是否真的回到正常轨道。