搜尋抓取

软 404 與空壳頁:返回 200 的地址在抓取日誌里怎么识別

很多地址返回 200,但頁面没有實质内容,蜘蛛抓過一次就不再回訪。這類软 404 與空壳頁不會报错,需要在响應体大小、内容模板與抓取日誌里交叉核對。本文给出识別思路與處理顺序,包括模板頁、空搜尋结果頁、參數组合頁的取舍,以及源站與 CDN 返回结果不一致时的排查方向。

搜尋抓取

软 404 與空壳頁:返回 200 的地址在抓取日誌里怎么识別

抓取日誌里最容易被忽略的一類問题,是狀態碼正常但内容空洞的地址。它們返回 200,服務器没有报错,蜘蛛也愿意抓,但抓到的頁面没有可索引的實质内容。這類地址會持續消耗抓取资源,也會稀释站点的内容质量信号。

软 404 與空壳頁的区別

软 404 通常指本该返回 404 的地址,被服務器用 200 加一段“内容不存在”的提示頁返回。空壳頁則是地址本身有效,但頁面内容由模板拼凑,缺少獨立信息。两者在日誌里的表現接近:都有 200、都有正常的响應头,区別主要在返回内容與頁面本身的设計意图。

判断时可以關注三点:

  • 响應体大小是否長期稳定在模板的最小值附近;
  • 頁面主体是否存在與 URL 相關的獨有信息;
  • 同一批地址是否只在參數或路径末尾不同,内容却高度相似。

常见的空壳頁面形態

  • 站内搜尋结果頁,尤其是無结果或结果很少的關鍵詞;
  • 篩選參數组合後没有匹配内容的列表頁;
  • 用戶主頁、标簽頁、归档頁在資料為空时仍然輸出模板;
  • 改版後保留的舊模板頁面,只剩導航與頁脚;
  • 需要登入或需要交互才顯示内容的入口頁。

這些地址往往由内鏈或 Sitemap 主動暴露,蜘蛛顺着入口一路抓下去,最後停在大量無内容頁面上。

從抓取日誌里识別

日誌本身不會标注“這是空壳頁”,需要结合几個字段交叉核對:

  1. 响應体大小:把同類 URL 的字节數排序,長期處于最小值区間的一批地址值得單獨查看。
  2. 抓取频次變化:正常頁面在被抓取几次後會進入相對稳定的回訪节奏,空壳頁往往抓過一次就不再出現。
  3. 抓取深度分布:如果某一层級的 URL 數量庞大但几乎不产生後續抓取,說明這一层没有可繼續延伸的内容。
  4. 抓取時間集中度:大量空壳頁集中在同一時間段被抓取,通常意味着它們来自同一個入口。

把這些线索放在一起看,比單看狀態碼更容易定位問题。

返回碼與内容的一致性核對

規范的寫法是:地址不存在就返回 404 或 410,不要用 200 加提示文案代替。需要保留的内容頁面,則确保返回 200 时有實际内容。以下几類情况需要重点核對:

  • 前端路由站点把所有路径都交给同一個 HTML 模板;
  • 接口出错时返回 200 加错誤 JSON,頁面再渲染為空;
  • CDN 缓存了错誤狀態,源站正常但邊缘节点返回空内容。

另外要留意响應头里的缓存策略。如果空壳頁被缓存了較長時間,蜘蛛在短時間内會反复拿到同一份空内容,抓取节奏被打乱,日誌上看起来像是频繁回訪,實际並没有新信息可取。

狀態碼只說明請求是否被正常處理,不說明這個地址是否值得被抓取。這两件事需要分別核對。

處理顺序建议

  1. 先確認這批地址是否應该存在。不该存在的,直接返回 404 或 410,並清理指向它們的入口。
  2. 應该存在但内容為空的,先补内容,再决定是否開放抓取。
  3. 參數组合产生的空頁面,用 robots.txt 規則或頁面級 noindex 收敛,不要让它繼續出現在内鏈與 Sitemap 中。
  4. 把處理结果與 Sitemap、内鏈入口同步更新,避免入口仍指向已下线的地址。
  5. 處理完成後观察一段時間的日誌,確認抓取集中在有内容的頁面上。

服務器稳定性同样會影响判断。返回碼抖動、超时與 5xx 會掩盖真實的内容狀態,建议在站点响應平稳的时段再做核對,必要时對照源站與 CDN 两邊的返回结果,確認蜘蛛拿到的是哪一份内容。