排查收錄时,很多人最先做的動作是在浏览器里打開連結,看到頁面正常顯示,就預設蜘蛛看到的也是這一份内容。實际情况经常不是這样:浏览器带着登入態、Cookie、本地缓存和完整的 JavaScript 执行环境,蜘蛛只有一次干净的請求。收錄問题的第一步,往往不是猜算法,而是先把這两種视角對齐。
把“我能看到”換成“蜘蛛能看到”
最直接的办法是用一個不带任何身份的請求去訪問頁面,然後把结果和你在浏览器里看到的内容逐段比對。重点看三件事:返回的狀態碼是什么、原始 HTML 里有没有正文、渲染之後的 DOM 和原始 HTML 差多少。
如果原始 HTML 里只有導航和骨架,正文全靠 JavaScript 填充,那就要確認渲染這一步在你的站点上是否真的能完成。渲染不成功,蜘蛛拿到的就是一份空壳,後面讨论索引和质量都没有意义。
常见的几類差异点
- robots.txt 規則:某條 Disallow 覆盖了目标路径,或者規則寫得太宽,把整個目錄都挡在外面。
- 服務器或 CDN 按 UA 拦截:部分防護策略預設拦截没有浏览器特征的請求,直接返回 403 或跳轉到驗證頁。
- 訪問门槛:需要登入、需要驗證碼、限制特定地区訪問,蜘蛛都進不来。
- 内容依赖渲染:原始 HTML 里没有正文,或關键連結是脚本生成的。
- 狀態碼異常:返回 200 但内容是错誤提示頁,或者每次訪問都跳到首頁。
- 頁面級指令:head 里有 noindex,或者 canonical 指向了另一個 URL。
- 遮挡與延迟加载:正文在首屏之外、需要交互才加载,或整段内容被彈窗盖住。
一次可复用的自检顺序
- 用無 Cookie 的方式請求目标 URL,记錄狀態碼和完整响應的头部。
- 查看响應体的前若干 KB,確認标题、正文首段、主要連結是否已经存在。
- 跟踪重定向鏈,確認最终落地的 URL 和预期一致,鏈條不要過長。
- 检查 head 区域的 robots meta 與 canonical,確認没有互相矛盾的指令。
- 用平台自带的 URL 检查功能查看渲染结果和抓取记錄,與自己的請求结果對照。
- 如果站点有日誌,把這次請求的時間点和日誌里的记錄對上,確認蜘蛛看到的是同一份响應。
抓取問题和索引問题要分開
自检结果通常落在两類里。一類是抓不到:規則拦截、狀態碼異常、内容根本没出現在响應里。這類問题的處理方向很明确,先把可訪問性修好,再谈其他。
另一類是抓到了但不進索引:蜘蛛能正常拿到完整頁面,狀態碼和指令都没問题,只是最终没有進入索引。這时繼續調整抓取路径基本没有帮助,需要回到内容本身去看,例如頁面之間是否高度相似、正文是否有獨立價值、模板部分占比是否過高。把两類問题混在一起處理,很容易在不相關的方向上反复折腾。
能抓取只是前提,不是收錄的保證。先把“蜘蛛能不能拿到”這一步確認清楚,再去判断“值不值得收”,排查效率會高很多。
建议把這次自检固定成一個上线前的動作,尤其是模板調整、CDN 策略變更、前後端渲染方式改動之後。與其在索引狀態里反复猜测,不如直接看一眼蜘蛛收到的那份响應。