排查收錄問题时,很多人第一反應是看“蜘蛛来過没有”。但日誌里的一次訪問,可能只是發現,也可能是抓取,两者混在一起看,很容易得出错誤结论。先把 URL 的發現路径理清楚,再看抓取结果,排查會顺很多。
先分清:發現和抓取是两件事
發現指的是搜尋引擎知道了這個 URL 的存在;抓取是它真的来取了一次内容;收錄是内容被判断為可以進入索引。這三個环节可以断在任何一處。日誌能看到的主要是抓取痕迹和部分發現痕迹,索引狀態則要靠站長工具或站内查询辅助判断。
常见的几條 URL 發現入口
站内連結
最稳定的一條。導航、列表頁、正文内鏈、面包屑、分頁都會把 URL 暴露出来。位置越靠前、被点击越多的連結,被跟進的概率越高。反過来,只存在于脚本渲染之後、或只出現在篩選條件里的 URL,發現會明顯變慢。
sitemap 與索引文件
sitemap 的主要作用是“告知”,不保證被抓。它擅長把深层的、内鏈較少的 URL 一次性交出去,但前提是文件本身能被正常抓取,且里面装的 URL 都是 200、不是重定向或已刪除頁面。
外鏈與站外入口
外鏈、友鏈、聚合頁、社交分享、论坛簽名等,都属于外部發現入口。质量比數量重要:一個本身被频繁抓取的頁面上的連結,往往比几十條低质目錄連結更有效。用蜘蛛池一類的工具批量制造入口,能加快“被發現”這一步,但入口頁本身质量差或被降權时,跟進效果也有限,不宜当成唯一手段。
重定向與跳轉鏈
301 會把發現能力传递给目标 URL,但每多一跳都會损耗。跳轉鏈過長,或中途出現 302、meta refresh、脚本跳轉时,蜘蛛可能停在中間不再往下走。
主動提交與接口推送
站長平台的提交、API 推送、IndexNow 一類协议,属于“提前告知”。它們能缩短發現時間,但同样不保證收錄。
日誌里怎么区分發現與抓取
- 看响應碼:200 且响應体較大,通常是完整抓取;304 或极小响應,可能只是探测。
- 看 User-Agent 與 IP 段:不同用途的爬虫标识不同,混為一谈會誤判。
- 看 Referer:带 referer 的訪問往往来自站内連結跟進;直接訪問的更可能来自 sitemap 或外部提交。
- 看訪問频率:某個 URL 短時間被重复訪問,可能是试探性抓取,也可能是在確認更新。
被發現之後,卡住抓取的原因
常见的有:服務器响應慢或频繁返回 5xx、429;robots 里屏蔽了對應路径;URL 带大量參數造成近乎無限的抓取空間;同一個頁面存在多個近似 URL,蜘蛛在几個版本之間来回跑;站内連結指向错誤地址,導致反复重定向。
一條可执行的排查顺序
- 確認目标 URL 返回 200,且内容與規范 URL 一致。
- 確認它至少有一條可点击的站内入口,且不在需要登入或交互之後才出現的位置。
- 確認 sitemap 中包含它,且 sitemap 本身可正常抓取。
- 對日誌取样,检查该 URL 是否出現過、返回碼是什么、来自哪個 referer。
- 若長期没有抓取,優先检查 robots、服務器响應和内鏈路径,而不是先去堆外鏈。
- 如果抓取了却没進索引,再轉去排查内容质量、重复程度與索引狀態。
把“發現—抓取—收錄”当成一條鏈来看,每一步單獨確認,比笼统地说“蜘蛛不来”更容易找到真正的堵点。