排查收录问题时,很多人第一反应是看“蜘蛛来过没有”。但日志里的一次访问,可能只是发现,也可能是抓取,两者混在一起看,很容易得出错误结论。先把 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、服务器响应和内链路径,而不是先去堆外链。
- 如果抓取了却没进索引,再转去排查内容质量、重复程度与索引状态。
把“发现—抓取—收录”当成一条链来看,每一步单独确认,比笼统地说“蜘蛛不来”更容易找到真正的堵点。