抓取日誌里最容易被忽略的一類問题,是狀態碼正常但内容空洞的地址。它們返回 200,服務器没有报错,蜘蛛也愿意抓,但抓到的頁面没有可索引的實质内容。這類地址會持續消耗抓取资源,也會稀释站点的内容质量信号。
软 404 與空壳頁的区別
软 404 通常指本该返回 404 的地址,被服務器用 200 加一段“内容不存在”的提示頁返回。空壳頁則是地址本身有效,但頁面内容由模板拼凑,缺少獨立信息。两者在日誌里的表現接近:都有 200、都有正常的响應头,区別主要在返回内容與頁面本身的设計意图。
判断时可以關注三点:
- 响應体大小是否長期稳定在模板的最小值附近;
- 頁面主体是否存在與 URL 相關的獨有信息;
- 同一批地址是否只在參數或路径末尾不同,内容却高度相似。
常见的空壳頁面形態
- 站内搜尋结果頁,尤其是無结果或结果很少的關鍵詞;
- 篩選參數组合後没有匹配内容的列表頁;
- 用戶主頁、标簽頁、归档頁在資料為空时仍然輸出模板;
- 改版後保留的舊模板頁面,只剩導航與頁脚;
- 需要登入或需要交互才顯示内容的入口頁。
這些地址往往由内鏈或 Sitemap 主動暴露,蜘蛛顺着入口一路抓下去,最後停在大量無内容頁面上。
從抓取日誌里识別
日誌本身不會标注“這是空壳頁”,需要结合几個字段交叉核對:
- 响應体大小:把同類 URL 的字节數排序,長期處于最小值区間的一批地址值得單獨查看。
- 抓取频次變化:正常頁面在被抓取几次後會進入相對稳定的回訪节奏,空壳頁往往抓過一次就不再出現。
- 抓取深度分布:如果某一层級的 URL 數量庞大但几乎不产生後續抓取,說明這一层没有可繼續延伸的内容。
- 抓取時間集中度:大量空壳頁集中在同一時間段被抓取,通常意味着它們来自同一個入口。
把這些线索放在一起看,比單看狀態碼更容易定位問题。
返回碼與内容的一致性核對
規范的寫法是:地址不存在就返回 404 或 410,不要用 200 加提示文案代替。需要保留的内容頁面,則确保返回 200 时有實际内容。以下几類情况需要重点核對:
- 前端路由站点把所有路径都交给同一個 HTML 模板;
- 接口出错时返回 200 加错誤 JSON,頁面再渲染為空;
- CDN 缓存了错誤狀態,源站正常但邊缘节点返回空内容。
另外要留意响應头里的缓存策略。如果空壳頁被缓存了較長時間,蜘蛛在短時間内會反复拿到同一份空内容,抓取节奏被打乱,日誌上看起来像是频繁回訪,實际並没有新信息可取。
狀態碼只說明請求是否被正常處理,不說明這個地址是否值得被抓取。這两件事需要分別核對。
處理顺序建议
- 先確認這批地址是否應该存在。不该存在的,直接返回 404 或 410,並清理指向它們的入口。
- 應该存在但内容為空的,先补内容,再决定是否開放抓取。
- 參數组合产生的空頁面,用 robots.txt 規則或頁面級 noindex 收敛,不要让它繼續出現在内鏈與 Sitemap 中。
- 把處理结果與 Sitemap、内鏈入口同步更新,避免入口仍指向已下线的地址。
- 處理完成後观察一段時間的日誌,確認抓取集中在有内容的頁面上。
服務器稳定性同样會影响判断。返回碼抖動、超时與 5xx 會掩盖真實的内容狀態,建议在站点响應平稳的时段再做核對,必要时對照源站與 CDN 两邊的返回结果,確認蜘蛛拿到的是哪一份内容。