蜘蛛抓不到頁面,很多站長第一反應是内容或連結的問题,于是去改内鏈、重新提交 Sitemap。但有一類情况常被忽略:蜘蛛根本没走到應用层,或者走到了却被站点的安全策略拦在门口。這類問题在日誌里往往表現為一段時間内某個搜尋引擎 UA 的請求大量返回 403、429,随後整站的抓取量跟着下滑。
安全策略為什么會誤伤蜘蛛
WAF、CDN 和主机面板的防護規則,判断逻辑大多基于請求特征,而不是「来的是谁」。常见的判断维度有三類:一是請求频率,單位時間内的請求數超過阈值就拦;二是請求特征,比如 UA 字符串、請求头缺失、訪問路径的規律性;三是行為模式,比如短時間内遍歷大量相似 URL。
問题在于,搜尋引擎蜘蛛恰好同时符合這几條:它會並發請求、會按一定規律遍歷 URL、請求头相對固定。如果防護規則只做粗粒度匹配,很容易把正常抓取当成異常流量處理。
几種常见的誤伤形態
直接返回 403 或 429
這是最直接的一種。蜘蛛拿到 403,會認為该 URL 不可訪問,短期内不再重试;拿到 429 則會理解為服務器要求降速,通常會降低抓取频率,但如果持續返回,抓取量會明顯收缩。两種情况下,站点看起来「一切正常」,實际已经丢掉了大量抓取机會。
返回正常狀態碼,但内容是挑战頁
更隐蔽的一種:防護层返回 200,頁面里却是 JS 挑战、驗證碼或「正在检查浏览器」的提示。蜘蛛看到的是一個几乎没有正文的頁面,既抓不到内容,也發現不了新連結。日誌里狀態碼一切正常,很难一眼看出来。
UA 校驗過嚴
有的站点為了防采集,直接按 UA 做白名單或黑名單。規則寫得不嚴谨时,可能出現桌面蜘蛛放行、移動蜘蛛被拦,或者舊版本 UA 被拦、新版本也被拦的情况。表現是同一批 URL,两套 UA 的抓取结果差异很大。
- 按 UA 字符串做模糊匹配,命中率低,誤伤概率高
- 按 IP 做频控,但没有给搜尋引擎预留額度
- 防護規則對整站生效,连 robots.txt 和 Sitemap 文件本身也被拦
怎么確認是不是被挡了
- 先在服務器日誌里按蜘蛛 UA 過滤,看响應碼分布。正常抓取應以 200 為主,如果 403、429、503 占比明顯,基本可以確認問题出在防護层。
- 检查 robots.txt 和 Sitemap 文件是否也能被正常訪問。如果连這两個文件都被拦截,蜘蛛對整個站点的理解都會受影响。
- 用带蜘蛛 UA 的請求做一次模拟訪問,观察是否返回挑战頁。注意這只能做粗略判断,真實身份校驗還要看 IP 段和反向解析。
- 對照搜尋平台的抓取統計與抓取错誤报告,看異常是否集中在某個時間段或某個目錄下。
放行蜘蛛的几個做法
放行不等于關掉防護,關键是把「搜尋引擎蜘蛛」和「普通自動化流量」分開處理。
- 按 IP 段加白名單。主流搜尋引擎都會公布爬虫 IP 段,结合反向 DNS 校驗,比單纯看 UA 可靠得多。UA 可以伪造,IP 段和解析记錄不容易。
- 给蜘蛛單獨限速。不要让它和普通用戶共用同一個频率阈值,否則高峰期蜘蛛就是第一批被限流的對象。
- 不要對已知蜘蛛啟用 JS 挑战和驗證碼。蜘蛛不执行這類交互,结果就是拿到一個空頁面。
- 把 robots.txt、Sitemap 和索引文件放進放行名單。這些文件体积小、請求少,不應该被安全策略影响。
- 調整後观察一段時間。抓取频率的恢复通常比下降慢,不會立刻回到原来的水平。
安全策略和搜尋抓取並不是對立的。真正需要防的是高频、無規律、伪装身份的流量,而搜尋引擎蜘蛛的請求特征是有公開規律可循的。把規則寫细一点,比一刀切更省事。
小结
抓取量下降时,除了检查内容、内鏈和 Sitemap,也值得花十分钟看看服務器日誌里的响應碼。如果蜘蛛 UA 對應的是成片的 403、429,那么問题不在頁面本身,而在门口。先把這條路径理顺,再谈 URL 發現和抓取深度才有意义。