搜尋抓取

上线前的抓取自测:把蜘蛛要走的路自己先走一遍

上线前與其等日誌里出現蜘蛛,不如自己按蜘蛛的方式走一遍:入口規則、狀態碼、内鏈路径、服務器响應速度,逐項確認。本文给出一套可复用的抓取自测流程,用来提前發現挡路的配置、過深的路径和間歇性故障。

搜尋抓取

上线前的抓取自测:把蜘蛛要走的路自己先走一遍

新栏目、新模板、新域名上线,很多人的第一反應是等日誌里出現蜘蛛。但等到蜘蛛真的来了才發現問题,改起来往往已经牵動线上结构。更省事的做法是:在上线前,自己按蜘蛛的方式把這條路走一遍。

為什么要自己先走一遍

蜘蛛看到的世界和你用浏览器看到的世界並不完全一样。它不登入、不点按钮、不一定执行脚本,也不會因為頁面好看就多给几次机會。你熟悉站点结构,知道该点哪里;蜘蛛只認連結和狀態碼。把這两者之間的落差提前找出来,比事後翻日誌排查轻松得多。

第一步:從入口規則開始

蜘蛛的第一站通常是 robots.txt,然後是首頁或 Sitemap。自测也從這里開始:

  • 打開 /robots.txt,確認没有把新目錄、静態资源目錄或整站誤挡。注意 Disallow 是按前缀匹配的,寫 /search 這種規則时,可能连 /search-guide 一起挡住。
  • 打開 Sitemap,確認里面列出的每個 URL 都能直接返回 200,而不是跳轉之後才到目标頁。
  • 確認 Sitemap 的地址寫進了 robots.txt,且文件本身可以匿名訪問。

第二步:用請求模拟一次抓取

不必装复杂工具,命令行就够了。带上蜘蛛的 User-Agent 發請求,重点看四件事:

  1. 狀態碼:目标頁返回的是 200,還是 301、302 甚至 403。跳轉一两次問题不大,但每一跳都會消耗抓取资源。
  2. 响應头:是否带着 noindex,是否设了奇怪的缓存策略,或者存在把蜘蛛挡在外面的規則。
  3. 响應体:在不执行脚本的情况下,首屏 HTML 里有没有标题、正文和主要連結。如果關键内容全靠脚本插入,就要確認渲染方案是否稳定。
  4. 大小寫與结尾斜杠:/Page 和 /page、/page 和 /page/ 是否被当成同一個地址,避免同一份内容生成多條路径。

第三步:把内鏈当成路径来走

入口没問题,不代表走得進去。挑几個最重要的目标頁,從首頁開始只靠点击連結往前,看看要几次才能到。三次以内比較理想,超過五次的頁面,很容易長期停在抓取队列後面。

同时留意两類問题:

  • 孤岛頁面:Sitemap 里有,但站内没有任何入口連結。它可能被抓到,却缺少内部權重和上下文。
  • 無限路径:篩選、排序、日歷、分頁组合出来的地址,理论上可以無限生成。用 robots 規則或 canonical 收敛,別让它們長期占住抓取队列。

第四步:看服務器扛不扛得住

蜘蛛抓取是並發請求,不是單個訪客。自测时可以用脚本同时請求几十個頁面,观察响應時間是否突然拉長、是否出現間歇性 5xx、CDN 缓存是否返回了舊版本。間歇性故障比一次宕机更麻烦:蜘蛛每次拿到的结果不稳定,它會主動降低抓取频率,恢复起来也慢。

自测的目的不是保證蜘蛛一定来,而是把明顯挡路的東西在上线前清掉。

一份可以复用的自测清單

  1. robots.txt 允许目标目錄和静態资源。
  2. Sitemap 中的 URL 全部返回 200,且不是重定向後的结果。
  3. 核心頁面從首頁出發三次点击内可達。
  4. 不执行脚本时,頁面仍有可讀的标题、正文和主要連結。
  5. TTFB 稳定,没有明顯的間歇性 5xx。
  6. 空结果頁返回 404 或 410,而不是 200 的空壳。
  7. canonical 指向自身或正确的規范地址。
  8. 參數组合不會生成大量重复路径。

把這份清單固定下来,每次改版、上新栏目或迁移目錄时跑一遍,比每次凭感觉排查要可靠得多。