常见问题

入口页链接的目标 URL 被 robots.txt 屏蔽,搜索蜘蛛还会抓取和发现它吗?

入口页明明放了链接,目标站日志里却看不到搜索蜘蛛,很可能是目标站的 robots.txt 把抓取挡住了。本文区分 URL 发现与抓取两种状态,说明 Disallow 的真实效果、常见误判场景,并给出确认屏蔽范围的排查思路。

常见问题

入口页链接的目标 URL 被 robots.txt 屏蔽,搜索蜘蛛还会抓取和发现它吗?

这是蜘蛛池和站点运营里很常见的疑问:入口页明明放了指向目标 URL 的链接,日志里却看不到搜索蜘蛛来抓那个目标 URL。很多时候原因不在链接写法,而在目标站点的 robots.txt 里有一条 Disallow。

先分清两件事:发现和抓取

搜索蜘蛛处理一个 URL 大致分两步:先从外链、sitemap、入口页等地方发现这个 URL,再决定要不要抓取它的内容。robots.txt 里的 Disallow 管的是第二步,它告诉蜘蛛这条路径不要抓,但不会让蜘蛛看不见这个 URL。

所以典型的日志表现是:蜘蛛确实来了入口页,也确实读到了里面指向目标 URL 的链接,但之后不会向目标 URL 发出任何请求。你在目标站点的访问日志里自然什么都看不到。

那这个 URL 还可能出现在搜索结果里吗

有可能,但形态通常很糟糕。如果目标 URL 没有被 noindex 或 X-Robots-Tag 明确禁止索引,搜索引擎仍可能仅凭外链信息把它放进结果页,标题和摘要往往是外链锚文本或 URL 本身拼出来的,内容抓不到、时效性差、随时可能消失。这种看得到抓不到的状态,对运营几乎没有价值,反而容易让人误判成蜘蛛池已经生效。

robots.txt 不是隐藏手段,也不是收录开关。它只约束抓取行为,既不保证 URL 出现在结果里,也不保证它不出现。

几种容易被忽略的情况

  • 规则范围写大了:比如把 Disallow 写成斜杠加星号,或者目录层级写得不对,实际屏蔽范围可能比你预计的大得多,连正经常规页面一起挡住。
  • 只屏蔽了部分 UA:robots.txt 可以按 User-agent 分组,某些规则只针对特定蜘蛛。用别的蜘蛛测试一切正常,用搜索蜘蛛却处处碰壁。
  • robots.txt 本身抓不到:如果 robots.txt 返回 5xx,不同搜索引擎的处理方式不一致,有的会在一段时间内按全站禁止来对待。
  • 被 WAF 或 CDN 拦在前面:蜘蛛根本没拿到 HTML,这和 robots.txt 无关,但日志表现很像,容易混在一起误判。

确认问题的方法

  1. 直接访问目标域名下的 robots.txt,看目标路径是否真的被 Disallow 命中。
  2. 用搜索引擎官方提供的 robots.txt 测试工具,选择对应蜘蛛的 UA 去验证具体 URL。
  3. 在目标站访问日志里按蜘蛛 UA 过滤,确认请求有没有到达服务器;一条都没有,多半是 robots 或前置拦截。
  4. 区分蜘蛛来过但被拒和蜘蛛从没来,这两种情况的处理方向完全不同。

确实需要被抓取时怎么办

如果目标 URL 是自己可控的站点,先确认它值得被抓取和收录,再去调整 robots.txt:把被误伤的路径放出来,或者用更精确的规则只屏蔽后台、站内搜索结果页这类不该抓的部分。调整后不要指望立刻生效,蜘蛛重新读取 robots.txt 的节奏并不固定,通常需要一段时间。

如果目标 URL 不在你控制范围内,robots.txt 这一关基本无解。继续往入口页堆链接,只是重复一遍发现但不抓取的过程,不会改变结果。

和蜘蛛池的关系

蜘蛛池能做的只是帮助发现,它无法让蜘蛛违反目标站点的 robots.txt 去抓取。把被屏蔽的 URL 大量挂到入口页上,除了增加无效抓取和日志噪音,没有实际收益。反过来,如果你在做入口页,也建议顺手检查入口页自身的 robots.txt,别把蜘蛛挡在门外还不自知。

小结

被 robots.txt 屏蔽的目标 URL,搜索蜘蛛仍然可能通过入口页知道它存在,但不会去抓取;能否出现在结果里取决于索引层面的设置,而且表现通常很差。遇到入口页有链接、目标站点却没有抓取日志的情况,先查 robots.txt 和前置拦截,再考虑链接写法、抓取配额这些因素,排查顺序会清楚很多。