搜索抓取

蜘蛛发现 URL 的其他通路:外链、跳转、Feed 与响应头

多数站点把 URL 发现寄托在 Sitemap 和内链上,但蜘蛛拿到新地址的入口还有站外引用、重定向末端、Feed 以及响应头里的位置信息。这篇文章梳理这几条通路的作用范围与常见误区,并给出一份可以马上执行的检查清单。

搜索抓取

蜘蛛发现 URL 的其他通路:外链、跳转、Feed 与响应头

聊 URL 发现时,多数人只盯着两处:Sitemap 和内链。这两条确实是主干,但蜘蛛拿到新地址的入口并不只有它们。搞清楚其余几条通路,能解释一些“明明没加链接,页面却被抓了”,以及“链接加了,蜘蛛就是不来”的现象。

站外引用:最古老的发现方式

别的站点链到你的 URL,蜘蛛顺着那根链接就能找到你。这条通路不依赖站内任何配置,也不依赖 Sitemap 是否及时更新。它的边界在于:外链所在的页面本身也要被抓到。如果对方站点抓取频率很低,或者链接出现在渲染后才生成的区域,发现就会延迟。

几个容易被误判的细节

  • 带 nofollow 的外链:链接仍可能作为发现线索出现,但不应指望它传递权重。
  • 跳转类链接:部分平台用中间页跳转,蜘蛛要先跟到中间页,再跟到目标,比直链多一步。
  • 被引用的地址已经失效:如果外链指向的是 404 或旧的重定向地址,等于把一次抓取机会花在了无效路径上。

重定向链的末端

301、302 的目标地址本身就是发现来源。常见场景是旧域名整体跳到新域名,蜘蛛会逐步把新域名下的 URL 纳入抓取范围。但链越长,每次跟随的成本越高,中途任何一环超时或返回错误,后面就断了。把跳转控制在一次以内,对抓取效率更友好。

Feed 与结构化数据

RSS、Atom 长期是一种轻量的 URL 发布方式,蜘蛛可以定期读取 Feed 获得新条目,适合更新频繁的栏目。结构化数据则是另一回事:其中的 URL 通常被当作描述信息,而不是可跟随的链接。指望靠 JSON-LD 里的字段来发现新页面,作用很有限。

响应头里的位置信息

HTTP 响应头可以携带 Location(跳转目标)与 Link 头(用于声明 canonical、alternate 等关系)。这些字段主要服务于语义表达,并不是为发现新 URL 设计的通道。把它们当作辅助信号即可,不要作为主要手段。

JavaScript 渲染出来的链接

如果导航和列表是靠前端脚本插入 DOM 的,原始 HTML 里就没有这些链接。蜘蛛需要先渲染页面,才能“看见”它们,这意味着发现会被推迟;渲染资源不足或超时的情况下,链接可能迟迟不出现。关键路径上的 URL,最好在服务器直接返回的 HTML 里就带上普通链接。

被发现只是第一步

一个 URL 被蜘蛛看到,离进入索引还有好几道关:robots.txt 是否允许、页面返回什么状态码、内容是否值得占用一份抓取预算、站点整体响应是否稳定。发现通路再多,如果服务器经常超时,蜘蛛也会主动降低访问频率。

可以马上做的几项检查

  1. 抽查外链来源指向的 URL 是否仍是当前有效的规范地址,避免把抓取引到旧链接。
  2. 收敛重定向链,让旧地址尽量一步跳到最终地址。
  3. 对比渲染前后的 HTML,确认关键导航链接在原始源码里就能看到。
  4. 在访问日志中筛出蜘蛛对新 URL 的首次访问时间,看看从发布到被抓隔了多久。
  5. 核对 Sitemap、Feed 里写的地址与页面上实际链接是否一致。
发现机制决定蜘蛛能不能找到地址,抓取与索引则取决于站点是否值得被反复访问,两者不要混为一谈。

把发现通路理顺,价值不在于多开几个入口,而在于让每条入口最终指向的,都是同一个有效地址。