做蜘蛛池和站点运营的人经常會問:入口頁到底有没有被搜尋蜘蛛爬過,目标 URL 有没有被顺着抓下去。比起猜,服務器日誌是最直接的證據。這篇讲的是怎么從日誌里把這两件事分開看。
日誌里真正有用的字段
訪問日誌一行通常包含很多信息,但和抓取判断相關的其實只有几個:
- IP:用来反查是不是搜尋蜘蛛的出口,但 IP 可以被伪造,不能單獨作為依據。
- 時間:看抓取是集中在一段時間,還是断断續續。
- 請求方法和路径:確認蜘蛛請求的是入口頁還是目标頁。
- 狀態碼:200、301、403、404、5xx 的含义完全不同。
- User-Agent:可以当作线索,但不是證據。
- Referer:目标 URL 的請求如果带着入口頁地址,說明很可能是顺着連結過来的。
- 返回字节數:200 但字节數极小,可能是空壳頁或被拦頁面。
- 响應時間:慢响應會影响蜘蛛後續的抓取节奏。
怎么確認對面真的是搜尋蜘蛛
UA 可以随便改,所以更稳妥的做法是反向解析 IP,把解析出的域名和搜尋引擎官方公布的網段做比對。不同搜尋引擎的驗證方式略有差別,各自官方文档里有說明。如果解析结果和 UA 對不上,基本可以判定是伪装請求。
入口頁和目标 URL 要分開統計
很多人把两者混在一起看,结果判断全乱。建议分開做两張統計:
- 入口頁:被請求次數、狀態碼分布、單次响應時間、两次訪問的間隔。
- 目标 URL:是否有請求、請求是否带入口頁 Referer、狀態碼、返回字节數。
如果入口頁每天都有蜘蛛訪問,但目标 URL 一條记錄都没有,問题大多出在入口頁本身:連結没被解析、連結不可见,或者連結地址寫错了。反過来,如果目标 URL 有請求但狀態碼是 403 或 404,那入口頁是正常的,問题在目标頁的可訪問性。
几種常见日誌形態
- 只有入口頁 200,目标頁 0 條:先检查連結是否真的出現在返回的 HTML 里,而不是靠 JavaScript 拼出来。
- 入口頁 200,目标頁 403 或 429:多半是防火墙或频率限制把蜘蛛挡了,可以看被拦請求的 UA 和 IP 是不是同一批。
- 入口頁大量 5xx:蜘蛛可能會降低對整站的抓取频率,先修服務端再谈別的。
- 只有普通訪客,没有蜘蛛:可能是入口頁本身還没被發現有價值,從外部連結和更新节奏上找原因。
看完日誌之後做什么
日誌的作用是缩小排查范围,不是直接给结论。一般按這個顺序處理:先確認蜘蛛身份,再看入口頁的狀態碼和响應時間,再確認連結是否出現在 HTML 源碼里,最後才检查目标 URL 本身的可訪問性和内容质量。顺序反了容易在無關的方向上耗時間。
日誌能告诉你蜘蛛来過没有、抓到了什么,但抓取之後是否收錄、以什么位置展現,還取决于目标頁自身的内容和站点整体情况,日誌本身說明不了這些。
把日誌当作日常巡查的一部分,固定每周看一次入口頁和目标頁的抓取记錄,比出了問题再翻几天的日誌要省事得多。