聊 URL 發現,很多人第一反應是内鏈、站点地图、canonical 這些站内的事。但實际运营中,有一類問题更常见:連結结构没問题,頁面也提交了,蜘蛛却迟迟不来。原因常常不在站内,而在于請求到達源站之前,就已经在 CDN 或 WAF 那一层被拦掉了。
先看表象:抓取量為什么會突然掉
当邊缘层開始拦截爬虫时,日誌和後台通常會有几個信号:
- 源站日誌里来自搜尋引擎的請求明顯减少,但站点頁面數量没變;
- 抓取統計中出現較多 403、429 或 5xx;
- 部分目錄能抓、部分目錄不能抓,差异往往和路径、參數有關;
- 同一批 URL 白天正常,夜間高峰期大量失敗。
這些信号容易被誤判成“内容质量不行”或“權重不够”,于是有人轉向蜘蛛池去补抓取量。方向其實反了:入口被堵住,再多外部流量也是撞墙。
CDN 和 WAF 常见的三類誤伤
1. 缓存規則把動態頁当静態頁處理
带參數的列表頁、分頁頁如果被長時間缓存,蜘蛛拿到的可能是過期内容或错誤跳轉;反過来,如果所有請求都强制回源、不做缓存,源站压力上来後响應變慢,抓取超时也會让蜘蛛提前离開。分頁、篩選這類動態 URL,最好單獨设規則,明确哪些缓存、缓存多久。
2. 频率限制與 UA 识別
不少防護策略預設“短時間大量請求就是攻击”,而搜尋引擎爬虫的抓取特征恰好就是短時間大量請求。如果只按 IP 频次做限制,很容易把正常抓取一起限流。更稳妥的做法是结合 UA 校驗、反向 DNS 驗證,给已知爬虫單獨放行,同时保留合理的频率上限。
3. 安全策略誤伤連結密集的頁面
频道頁、标簽聚合頁、站点地图頁這類連結數量多的頁面,有时會触發“疑似采集”的規則而被挑战,比如驗證碼或 JS 挑战。蜘蛛遇到挑战頁拿不到内容,這條連結通道就等于断了。
怎么驗證和排查
- 對照時間线:把抓取量下降的時間点和 CDN/WAF 規則變更记錄對齐,很多問题一目了然。
- 看源站日誌:如果源站根本收不到爬虫請求,問题在邊缘;如果收得到但狀態碼異常,問题在源站或回源鏈路。
- 模拟抓取:用與爬虫一致的 UA 和訪問路径發一次請求,看返回的是内容頁、挑战頁還是跳轉。
- 分級放行:對已驗證的爬虫 IP 段單獨設定策略,而不是整体關閉防護。
- 保留回滚:規則調整後观察一到两周,確認抓取趋势稳定再固化。
运营层面值得养成的几個习惯
- 新增栏目或改版前,先確認新路径的抓取策略已放行;
- 把 CDN/WAF 變更也纳入改版检查清單,和 robots.txt、站点地图一起過一遍;
- 定期比對邊缘层與源站的日誌,找出只在一侧出現的異常;
- 對分頁、篩選、搜尋结果的 URL,提前規划缓存與放行策略,別等出問题再补。
URL 發現是一條鏈路:連結被寫出来、路径可達、請求能穿過邊缘层、源站正常响應,缺一环都不成立。多數情况下,先把這條鏈路检查通畅,再考虑用外部手段加抓取,顺序會顺很多。