做蜘蛛池和站点运营时,一個很常见的困惑是:入口頁的訪問日誌里明明有搜尋蜘蛛的 UA,目标 URL 的日誌却一條都没有。這时候容易誤判成“蜘蛛池失效”或者“目标頁被惩罚”,其實中間還有好几個环节需要逐個確認。
先搞清楚“来過”和“跟過去”是两件事
搜尋蜘蛛訪問入口頁,只代表它取走了這個 HTML。是否繼續抓目标 URL,取决于它能不能在解析结果里找到可跟的連結,以及目前抓取预算是否够用。日誌對比时要注意三件事:
- 时区對齐:服務器日誌常用本地時間,搜尋引擎後台資料可能是 UTC,直接比對會错位几個小时。
- UA 真伪:UA 可以伪造,最好用反向 DNS 或官方 IP 段校驗,避免被假蜘蛛的訪問誤導。
- 日誌归属:目标站如果挂了 CDN,源站日誌只记錄回源請求,蜘蛛直接命中缓存时你什么都看不到。
按鏈路逐段排查
1. 入口頁的响應是否完整
確認返回狀態是 200,内容不是空壳,也不是被 WAF 拦截後的驗證頁。响應体過大、首字节時間過長,蜘蛛可能在讀完之前就結束請求,連結自然拿不到。
2. 連結是否真的在源碼里
用 curl 或關閉 JS 的浏览器取一次入口頁,看目标 URL 是否出現在返回的 HTML 中。如果是前端渲染後才插入的連結,搜尋蜘蛛不一定执行脚本,即使执行也可能因為资源加载失敗而拿不到。
3. 連結属性是否放行
检查 rel="nofollow"、rel="sponsored"、meta robots 的 nofollow,以及連結是否被 JS 事件绑定替代了 href。這些都會让蜘蛛跳過目标 URL。
4. 目标 URL 這一侧的條件
入口頁没問题,也可能卡在目标頁:robots.txt 屏蔽、返回 4xx 或 5xx、重定向鏈條過長、需要登入或 Cookie 才能訪問。建议先在搜尋引擎提供的抓取測試工具里單獨测一次目标 URL。
5. 抓取预算與频控
站点整体被限流、入口頁同一 IP 下連結過多、短時間内提交大量 URL,都可能让蜘蛛只取一部分就停下。這種情况在日誌上表現為“抓了入口頁,但只跟了前面几條”。
几個容易誤判的点
- 目标頁是纯 JS 渲染,蜘蛛抓取时渲染服務失敗,日誌有记錄但内容為空,看起来像没抓。
- 目标 URL 之前抓過且内容没變,复訪时服務端返回 304,日誌上可能不計入常規請求數。
- 日誌被采样或滚動清理,真實抓取记錄已经丢失。
- 同一目标 URL 存在多個變体(带參數、大小寫不同),你在日誌里搜的形式和蜘蛛抓的形式不一致。
建议的驗證顺序
- 固定一小批入口頁和目标 URL,减少變量。
- 用不同 UA、不同出口 IP 各测一次入口頁,確認源碼里能看到連結。
- 在搜尋引擎後台對單個目标 URL 發起抓取測試,確認能正常返回。
- 连續观察 24 到 72 小时的日誌,看目标頁是否出現同 IP 段的訪問。
排查這類問题不要急着加大投放量,先把“入口頁可解析、連結可跟、目标頁可訪問”這三步確認掉,再谈規模。