先说结论:入口頁本身返回 5xx 或 403,搜尋蜘蛛大概率不會去解析頁面里的連結,也就谈不上顺着抓目标 URL。連結發現的前提是頁面被成功取回,狀態碼不對,後面的鏈路基本就断了。
狀態碼决定了蜘蛛愿不愿意往下走
搜尋蜘蛛請求一個 URL 後,會先看 HTTP 狀態碼和响應头,再决定怎么處理正文。
- 200:正常解析,頁面里的 a 連結會被提取並進入待抓队列。
- 5xx(500、502、503、504):属于服務端临时故障,蜘蛛一般视為抓取失敗,不解析正文,稍後重试。重试仍是 5xx,抓取频次會往下掉。
- 403:被服務器拒绝。蜘蛛通常判定為無權訪問,同样拿不到連結。
- 404 / 410:頁面不存在,直接放弃,不會有連結被提取。
- 429:請求過多被限速,蜘蛛會退避,這一轮里入口頁相当于没被抓到。
也就是说,入口頁抓取失敗时,上面寫了多少條目标 URL、锚文本寫得多精准,都發挥不了作用。
几種容易被忽略的“半失敗”
間歇性 5xx
入口頁时好时坏,蜘蛛某次抓到 500,那一次就不會提取連結。日誌里看着“蜘蛛来過”,實际上這一轮是白跑的。
WAF 或 CDN 返回 403
部分防護策略會按来源 IP、UA、訪問频率做拦截,返回一個 403 拦截頁。蜘蛛拿到的是拦截頁而不是真實入口頁,自然看不到連結。
软 404
狀態碼是 200,但正文是“頁面不存在”“内容已刪除”之類的提示。這種情况蜘蛛能解析連結,但頁面质量差、重复度高,長期看對入口頁本身没有帮助。
跳轉鏈條過長
入口頁 302 到中間頁再 302,鏈條上任意一环 5xx 或 403,最终都到不了真正带連結的那個頁面。
排查顺序建议
- 用命令行或抓取工具直接請求入口頁,看狀態碼、响應头和返回正文,不要只看浏览器渲染後的结果。
- 检查服務器错誤日誌,確認 5xx 是應用报错、超时,還是被上游拦截。
- 確認 WAF / CDN 是否對搜尋蜘蛛的 UA 或 IP 段留了例外規則。
- 看入口頁的响應時間,超過几秒的頁面容易被判定為不稳定,抓取频次随之下降。
- 確認入口頁没有被 robots.txt、登入墙、驗證碼挡住。
已经發生了怎么补救
- 先修狀態碼,把入口頁恢复到稳定 200,再考虑往上加新連結。
- 不要只依赖入口頁,重要目标 URL 可以同时通過站点地图、站内連結、其他入口頁等多條路径暴露。
- 如果入口頁只是临时不可用,不必急着換域名,先把服務器稳定性解决。
- 持續看日誌里入口頁的抓取狀態,確認後面几轮恢复正常,再判断連結有没有被跟進。
一句话判断
看入口頁 URL 在日誌里的狀態碼:200 且正文正常,連結被提取只是時間問题;如果是 4xx / 5xx,先別纠结連結寫法和锚文本,把服務端問题解决掉更實际。
入口頁的作用是被成功取回並被解析,狀態碼不對,連結再多也是空轉。先保證入口頁稳定可訪問,再谈連結布局和數量。