蜘蛛池知识

蜘蛛池里的失效入口頁:404、410 與软 404 的识別與處理

蜘蛛池跑久了,入口頁會出現分化:有的還在被反复抓取,有的已经失效却仍挂在池子里。這篇区分 404、410 與软 404 三種情况,說明失效入口頁對抓取效率的實际影响,並给出巡检發現方法和分批處理的建议。

蜘蛛池知识

蜘蛛池里的失效入口頁:404、410 與软 404 的识別與處理

蜘蛛池跑一段時間之後,入口頁的狀態會慢慢出現分化:有的頁面還在被蜘蛛反复抓,有的已经彻底没人来了,還有一部分頁面虽然返回 200,但内容早就空了或者跳到了別處。這部分「失效入口頁」如果一直挂在池子里,既占着资源,也會让蜘蛛白跑。下面说说怎么识別和處理。

三種「找不到」不是一回事

先区分清楚:

  • 404:服務器明确告诉蜘蛛這個地址没有對應内容。入口頁被刪除、域名解析正常但文件没了,通常返回 404。
  • 410:语义更明确,表示「曾经有、現在永久不再有」。對搜尋引擎来说,410 的刪除信号比 404 更干脆。
  • 软 404:最容易被忽略的一種。HTTP 狀態碼是 200,但頁面内容是空的、提示「内容不存在」,或者只剩一個模板框架。蜘蛛拿到的狀態碼正常,實际拿不到有價值的東西。

前两種至少狀態碼是诚實的,第三種才是真正麻烦的——它不會在狀態碼統計里暴露出来。

失效入口頁對池子的實际影响

入口頁的作用是把蜘蛛引到目标頁。一個失效入口頁造成的影响大致有三层:

  • 蜘蛛按計划来了,抓到的是空頁面,這次抓取基本浪費。抓取预算是有限的,浪費在這里就少了別處。
  • 如果入口頁上原本挂着指向目标頁的連結,頁面失效意味着這條通路断了。
  • 大面积失效會让蜘蛛對整站的抓取频率下調,恢复起来需要時間。

不必把單個失效頁看得太重,但如果失效比例持續上升,池子的整体效率會明顯變差。

怎么發現失效入口頁

  • 服務器日誌里筛狀態碼。404 和 410 的訪問记錄可以直接查到,注意区分蜘蛛 UA 的請求和其他請求。
  • 软 404 靠狀態碼看不出来,得看入口頁的實际可用性:頁面正文長度、是否還包含指向目标頁的連結、有没有被替換成占位内容。
  • 定期抽样訪問入口頁列表,尤其是那些長時間没有蜘蛛訪問记錄的頁面。

處理方式

發現之後別一刀切,按情况分開處理:

  1. 頁面确定不再使用、域名還保留的,直接返回 410 或 404,不要用 200 返回一個空頁面假装還在。
  2. 内容搬到了新地址的,用 301 指向新入口頁,让蜘蛛顺着走。
  3. 只是暂时性故障(服務器重啟、文件被誤删)的,尽快恢复原状,恢复之前別急着改狀態碼。
  4. 入口頁上的目标連結失效的,要么換連結,要么把這個入口頁一起下掉,別留一個空壳。

几個容易养成坏习惯的地方

  • 用 200 返回「该内容已刪除」的提示頁。這是典型的软 404,比直接 404 更糟。
  • 入口頁 301 到一個和目标頁毫無關系的地址,蜘蛛跟過去發現是另一回事,等于白跑。
  • 發現失效就立刻大批量刪除入口頁,蜘蛛短時間内集中遇到大量 404,容易把整個站的抓取节奏打乱。
  • 只清頁面不清連結,別的入口頁里還挂着指向已刪除頁面的連結。
失效入口頁不用天天清,但要定期看。狀態碼诚實、連結有去處、批量操作分批做,這三点比追求「零 404」更實际。