網站收錄

蜘蛛被 WAF 挡在门外:抓取失敗如何被誤判成收錄問题

收錄下滑时,很多人先怀疑内容质量或 canonical,却忽略了請求可能在到達源站前就被 WAF、CDN 或防火墙拦下。本文讲清拦截在日誌里的常见特征、如何用官方 IP 校驗区分真蜘蛛與伪造 UA,以及放行、限速和复核的處理顺序。

網站收錄

蜘蛛被 WAF 挡在门外:抓取失敗如何被誤判成收錄問题

收錄下滑,很多人第一反應是内容质量、canonical 或者 sitemap。但有一類情况常被忽略:蜘蛛确實来過,請求却在到達頁面之前就被拦住了。源站日誌里看不到它,抓取統計里却寫着失敗,于是問题被誤判成内容不被收錄。

被拦的請求,在日誌里長什么样

如果只看源站訪問日誌,被 WAF 或 CDN 挡掉的請求根本不會出現,容易得出蜘蛛没来的结论。換個位置看,特征其實比較集中:

  • 狀態碼異常:403、429、503 反复出現,或者返回 302 跳到驗證頁;
  • 返回 200 但内容是挑战頁:比如一段 JS 校驗、驗證碼頁面,蜘蛛拿到的是空壳;
  • 抓取频次突然降到很低:不是蜘蛛不来了,而是来一次被拒一次,频次自然被压低;
  • 渲染阶段失敗:首屏 HTML 能拿到,但渲染代理的請求被單獨拦截。

這些情况都指向同一件事:抓取通道不通。抓取和收錄是两回事,抓不到内容的頁面,後面索引评估也無從谈起。

常见的拦截来源

WAF 規則誤伤

一些規則會针對路径里的特殊字符、長參數、高频訪問做拦截。列表頁、篩選頁、站内搜尋這類 URL 很容易踩中,恰好也是收錄問题高發的頁面類型。

CDN 的机器人與区域策略

部分 CDN 預設開啟 Bot 管理,規則寫得粗就會把搜尋引擎一起挡掉。区域限制、防盗鏈、频率限制也可能波及搜尋蜘蛛。

服務器层面的封禁

fail2ban、自寫脚本、按 UA 黑名單屏蔽,都可能把合法爬虫寫入封禁列表。這類封禁往往是一次触發、長期生效,日誌里只剩沉默。

先確認是不是誤拦

  1. 用搜尋平台的抓取統計或 URL 检查工具,看它返回的狀態碼和抓取時間,而不是只盯着自己的服務器日誌;
  2. 對照官方公布的 IP 段或反向 DNS 结果,驗證請求是否真的来自搜尋引擎;
  3. 用不同 UA 請求同一 URL,观察响應差异,区分是内容問题還是策略問题;
  4. 把 CDN 邊缘日誌和源站日誌放在一起看,缺口往往就是被拦的部分。
放行要基于 IP 驗證,不要只看 User-Agent。UA 可以随便伪造,只凭 UA 放行等于自己開了個口子。

處理顺序:先通,再谈质量

確認誤拦之後,按下面的顺序處理會更稳:

  • 放行已驗證的搜尋引擎来源,包括正常抓取和渲染請求;
  • 检查 WAF 規則中针對參數、路径和频率的條目,缩小誤伤范围;
  • 對 429、503 這類限速响應,設定合理的重试與配額,而不是長期封禁;
  • 涉及 JS 挑战或驗證碼的頁面,為搜尋引擎提供可绕過的通道,否則蜘蛛永遠拿不到正文;
  • 改動後观察一段時間,看抓取频次和狀態碼是否回到正常区間。

收錄問题排查时,建议先把抓取通道確認一遍,再去看内容、重复和 URL 規范。顺序反了,很容易在内容层面反复調整,却始终绕不開那個被拦在门外的請求。