常见問题

蜘蛛池入口頁用 meta refresh 跳轉:搜尋蜘蛛會跟過去吗,里面的連結還抓得到吗

不少蜘蛛池入口頁不做 301,也不寫可点击連結,只用一行 meta refresh 跳轉。本文說明搜尋蜘蛛對 delay=0 和延迟跳轉的不同處理,為什么它不能替代 a href,以及如何用日誌判断蜘蛛是否真的跟過去了。

常见問题

蜘蛛池入口頁用 meta refresh 跳轉:搜尋蜘蛛會跟過去吗,里面的連結還抓得到吗

很多蜘蛛池入口頁為了“省事”,不做服務端跳轉,也不寫可点击的連結,只在 head 里放一行 meta refresh,把訪客和爬虫一起送到下一個頁面。問题在于:搜尋蜘蛛對 meta refresh 的處理並不是“看到就跟着抓”,它的地位介于重定向和普通頁面内容之間,可靠性明顯低于一個正常的 a href 連結。

先给结论

主流搜尋引擎基本都能识別 meta refresh。delay=0 的立即跳轉,通常會被当作類似 301/302 的重定向来對待,蜘蛛有較大概率去請求目标地址;delay 大于 0 的延迟跳轉,更像頁面里的一句提示,是否跟随、隔多久跟随,各家實現並不一致,不确定性要大得多。

但“能识別”不等于“會当成連結来對待”。meta refresh 不進入頁面的連結關系分析,也没有锚文本可用,所以它顶多算一條补充通道,不适合作為入口頁里唯一的 URL 發現方式。

两種寫法的實际差別

delay=0,立即跳轉

這種情况下,入口頁在蜘蛛眼里常常只是一個中轉地址。你會在日誌里看到蜘蛛先抓入口頁,紧接着抓目标地址。如果入口頁本身返回 200 但内容很薄,它被反复抓取的意义不大,真正被识別和评估的還是目标地址。

delay=3、delay=5 等延迟跳轉

延迟寫法在浏览器里是“停留几秒再跳”,對爬虫来说更像一段普通 HTML。有的引擎會跟随,有的不會,也有的會跟随但優先級很低。入口頁如果只靠這一種方式,URL 被發現的速度和概率都會打折扣。

為什么它不如普通連結可靠

  • 不參與連結關系計算:目标地址拿不到锚文本,也進不了正常的連結图。
  • 行為不统一:不同搜尋引擎、不同抓取版本的處理可能存在差异。
  • 容易被跳過:入口頁内容單薄或長期不更新时,meta refresh 往往连带被忽略。
  • 排查困难:日誌里只看见入口頁被抓,很难分清是没跟過去,還是跟過去了但没被收錄。
  • 多层套用更糟:A 頁 refresh 到 B 頁,B 頁再 refresh 到 C 頁,鏈路越深越容易断。

想让某個 URL 被稳定發現,建议這样放

  1. 正文里寫完整的绝對地址,用 a 标簽包起来,並保證入口頁返回 200、robots 允许抓取。
  2. 單個入口頁的連結數量控制在合理范围,不要為了堆量把正文塞满。
  3. 把 sitemap 当作第二條通道:入口頁负责連結,sitemap 负责清單,两者互相印證。
  4. 确實要更換入口地址时,用服務端 301 處理,而不是靠 meta refresh 打补丁。
  5. 如果一定要用 meta refresh,寫在 head 里,目标用绝對 URL,delay 设為 0,同一頁照样保留可点击連結。

怎么驗證搜尋蜘蛛到底有没有跟過去

最直接的办法是看服務器訪問日誌:目标地址那條记錄有没有出現、UA 是什么、時間点是不是紧跟入口頁之後。也可以给入口頁和目标頁設定区分明顯的路径,方便在日誌里過滤統計。

如果连續观察一段時間,日誌里只有入口頁的抓取记錄,目标地址一次都没出現,基本可以判断蜘蛛没有跟随這次跳轉。這时不要反复調整 delay 的數值,先把正常的 a href 連結补上。

几個容易踩的坑

  • 把 meta refresh 寫在 body 里:部分解析器可能忽略,尽量放在 head。
  • 目标寫成相對路径:层級一深就容易指错,统一用绝對地址。
  • 入口頁同时设了 noindex:抓取和跟進是两回事,但頁面本身的價值會被進一步削弱。
  • 只看浏览器表現:浏览器能跳,不代表蜘蛛會跟,判断依據要回到日誌。
meta refresh 可以当辅助,不能当主路。入口頁真正的價值,是给蜘蛛一條清晰、可点击、可驗證的路径,而不是让它去猜。