網站收錄

頁面自己能打開,不代表蜘蛛能抓:收錄前先做一次抓取视角自检

排查收錄时,很多人在浏览器里看到頁面正常就認為没問题,但蜘蛛拿到的往往不是同一份内容。本文给出一次可操作的抓取视角自检:對比原始HTML與渲染结果、检查狀態碼與重定向鏈、確認頁面級指令,並把可訪問性問题與索引問题分開處理。

網站收錄

頁面自己能打開,不代表蜘蛛能抓:收錄前先做一次抓取视角自检

排查收錄时,很多人最先做的動作是在浏览器里打開連結,看到頁面正常顯示,就預設蜘蛛看到的也是這一份内容。實际情况经常不是這样:浏览器带着登入態、Cookie、本地缓存和完整的 JavaScript 执行环境,蜘蛛只有一次干净的請求。收錄問题的第一步,往往不是猜算法,而是先把這两種视角對齐。

把“我能看到”換成“蜘蛛能看到”

最直接的办法是用一個不带任何身份的請求去訪問頁面,然後把结果和你在浏览器里看到的内容逐段比對。重点看三件事:返回的狀態碼是什么、原始 HTML 里有没有正文、渲染之後的 DOM 和原始 HTML 差多少。

如果原始 HTML 里只有導航和骨架,正文全靠 JavaScript 填充,那就要確認渲染這一步在你的站点上是否真的能完成。渲染不成功,蜘蛛拿到的就是一份空壳,後面讨论索引和质量都没有意义。

常见的几類差异点

  • robots.txt 規則:某條 Disallow 覆盖了目标路径,或者規則寫得太宽,把整個目錄都挡在外面。
  • 服務器或 CDN 按 UA 拦截:部分防護策略預設拦截没有浏览器特征的請求,直接返回 403 或跳轉到驗證頁。
  • 訪問门槛:需要登入、需要驗證碼、限制特定地区訪問,蜘蛛都進不来。
  • 内容依赖渲染:原始 HTML 里没有正文,或關键連結是脚本生成的。
  • 狀態碼異常:返回 200 但内容是错誤提示頁,或者每次訪問都跳到首頁。
  • 頁面級指令:head 里有 noindex,或者 canonical 指向了另一個 URL。
  • 遮挡與延迟加载:正文在首屏之外、需要交互才加载,或整段内容被彈窗盖住。

一次可复用的自检顺序

  1. 用無 Cookie 的方式請求目标 URL,记錄狀態碼和完整响應的头部。
  2. 查看响應体的前若干 KB,確認标题、正文首段、主要連結是否已经存在。
  3. 跟踪重定向鏈,確認最终落地的 URL 和预期一致,鏈條不要過長。
  4. 检查 head 区域的 robots meta 與 canonical,確認没有互相矛盾的指令。
  5. 用平台自带的 URL 检查功能查看渲染结果和抓取记錄,與自己的請求结果對照。
  6. 如果站点有日誌,把這次請求的時間点和日誌里的记錄對上,確認蜘蛛看到的是同一份响應。

抓取問题和索引問题要分開

自检结果通常落在两類里。一類是抓不到:規則拦截、狀態碼異常、内容根本没出現在响應里。這類問题的處理方向很明确,先把可訪問性修好,再谈其他。

另一類是抓到了但不進索引:蜘蛛能正常拿到完整頁面,狀態碼和指令都没問题,只是最终没有進入索引。這时繼續調整抓取路径基本没有帮助,需要回到内容本身去看,例如頁面之間是否高度相似、正文是否有獨立價值、模板部分占比是否過高。把两類問题混在一起處理,很容易在不相關的方向上反复折腾。

能抓取只是前提,不是收錄的保證。先把“蜘蛛能不能拿到”這一步確認清楚,再去判断“值不值得收”,排查效率會高很多。

建议把這次自检固定成一個上线前的動作,尤其是模板調整、CDN 策略變更、前後端渲染方式改動之後。與其在索引狀態里反复猜测,不如直接看一眼蜘蛛收到的那份响應。