搜尋抓取

软 404 的抓取代價:頁面回了 200,蜘蛛却没讀到内容

服務器返回 200,蜘蛛也拿到了 HTML,但頁面里没有實质内容,這類“软 404”在日誌里看不到报错,却會長期占着抓取路径。本文梳理软 404 的典型来源、它對抓取线索與抓取预算的實际影响,以及排查和處理时可以先做哪几件事。

搜尋抓取

软 404 的抓取代價:頁面回了 200,蜘蛛却没讀到内容

服務器返回 200,蜘蛛也顺利拿到了 HTML,但頁面里没有實质内容——這類頁面通常被称為软 404。它不會在服務器日誌里留下一條红色错誤,狀態碼看上去一切正常,所以在抓取鏈路上很不容易被注意到。問题在于,蜘蛛對它的處理方式和真正的 404 並不一样。

蜘蛛眼里的“到了,但没内容”

当蜘蛛請求一個 URL,得到 200 响應,就會認為這個地址是一個有效頁面,並把它放進後續的抓取和评估流程。但如果 HTML 里只有導航、頁脚和一句“暂無结果”,正文部分接近空白,搜尋引擎在解析时容易把它判定為软 404:地址是通的,内容却是空的。

這種判定不一定立刻發生,也可能在几次抓取之後才稳定下来。關键在于,200 的响應意味着蜘蛛不會主動把這條 URL 從抓取队列里划掉,它的线索依然挂在站点的抓取图谱上。

软 404 最容易出現在哪几類 URL

  • 篩選或排序參數组合後没有任何结果的列表頁,例如颜色、價格区間交叉後為空。
  • 已下架商品、已刪除文章,但模板仍然返回 200,只是正文区域没有内容。
  • 分頁參數超出實际頁數的翻頁地址,比如第 20 頁之後只剩空列表。
  • 搜尋站内结果頁,關鍵詞命中為零时依然给出 200 的空结果頁。
  • URL 能打開,但正文由前端异步加载,首屏 HTML 里什么都没有。

它對抓取路径的實际影响

  • 线索不释放。真正的 404 會让蜘蛛逐步降低回訪频率,软 404 則繼續以有效地址的身份存在,每次重訪都消耗一次請求。
  • 重复回訪同一批地址。当這類 URL 數量較多时,蜘蛛容易在同一批空頁之間来回走,真正需要抓取的新頁面反而排在後面。
  • 内鏈线索被稀释。如果站内大量連結指向空结果頁或已下架頁,蜘蛛顺着内鏈一路走過去,拿到的都是低信息量頁面,對整站结构的判断會變模糊。
  • 掩盖真實問题。模板返回 200 是一種省事的做法,但會让“這個地址确實不该存在”這一信息传達不出去。

怎么把它從抓取路径里認出来

  1. 看服務器日誌里的响應碼只是第一步,200 的請求還要结合响應体大小和正文内容一起判断。体积明顯偏小的頁面值得單獨抽样。
  2. 把日誌里被反复抓取的參數型 URL 挑出来,人工打開几個,確認是不是空结果頁。
  3. 在站点地图或内鏈里找找有没有指向這些地址的入口,有入口說明蜘蛛還會繼續走過来。
  4. 观察一段時間内被抓取 URL 的總量與其中有内容頁面的比例,比例失衡往往說明空頁占了太多抓取机會。

確認之後可以怎么處理

  • 该消失的就让它 404 或 410。已经下架且没有替代内容的产品、文章,直接返回 404 比返回空壳 200 更清晰,蜘蛛能據此逐步清理线索。
  • 有相近内容的做 301。商品換型号、文章換地址时,跳轉到确實相關的頁面即可,但要注意別把大量不相關頁面都跳到一個首頁。
  • 能补内容就补。空搜尋结果頁可以给出相關推荐或热门列表,让它有存在價值;但如果這類頁面數量巨大,更實际的做法是禁止蜘蛛抓取參數组合。
  • 谨慎使用 noindex。noindex 的頁面仍然會被抓取,只是不進索引,對于數量庞大的參數頁,它並不能解决抓取請求被占用的問题。
判断标准可以很简單:這個地址如果用戶点進来,會不會觉得“這里應该有東西,但什么都没有”?如果答案是會,那它對蜘蛛来说大概率也不是一條值得保留的抓取路径。

软 404 不太會造成立刻可见的故障,它的代價是慢慢累积的:一批批空頁持續占用抓取請求,内鏈线索指向没有落点的地方。定期從日誌和實际頁面两头核對一次,把该返回错誤的地址還给它一個错誤碼,抓取路径會干净不少。