robots.txt 管的是抓取,不是简单的“藏起来”
先说结论:如果入口页上的链接指向目标 URL,而该目标 URL 的路径被 robots.txt 屏蔽,搜索蜘蛛通常不会继续抓取这个目标 URL。它可能在解析入口页 HTML 时看到链接文本,但看到不等于会抓取。robots.txt 的作用是告诉爬虫哪些路径不允许抓取,而不是告诉搜索引擎“请把这个页面从索引里删掉”。这两件事经常被混在一起。
在蜘蛛池场景里,入口页承担的是“被搜索蜘蛛发现”的角色。一旦发现路径被 robots.txt 切断,入口页挂再多链接,效果也会大打折扣。
入口页可抓,但目标 URL 被屏蔽,会发生什么
这种情况下,搜索蜘蛛可以正常抓取入口页,也能在 HTML 中看到指向目标 URL 的链接。但当它准备跟进时,会检查 robots.txt。如果目标 URL 的路径命中 Disallow 规则,爬虫通常会停止抓取该 URL。结果是:链接存在,目标 URL 却没有被抓取,后续的内容解析、索引判断也就无从谈起。
有些站长会问:那搜索引擎会不会“记住”这个 URL?可能会知道链接存在,但这和抓取、收录是两码事。知道一个 URL 不等于会处理它。
入口页本身被屏蔽,情况更直接
如果入口页自己就被 robots.txt 禁止抓取,搜索蜘蛛根本不会请求这个页面,页面上的链接自然也不会被解析。这种情况下,目标 URL 通过该入口被发现的机会基本为零。排查时,先确认入口页 URL 是否被规则命中,再看页面级 meta robots 或 HTTP 头里的 X-Robots-Tag 是否也设置了限制。
几个容易踩的坑
- 屏蔽抓取不等于移除索引:如果一个 URL 已经被收录,之后再用 robots.txt 屏蔽抓取,它仍可能出现在搜索结果里,只是摘要可能变旧。想移除索引,通常要用 noindex,而不是只靠 robots.txt。
- 规则写得太宽:比如 Disallow: / 会屏蔽整站,Disallow: /search 可能误伤带 /search 的正常路径。用通配符和结尾符号时更要小心。
- 只屏蔽了参数路径:目标 URL 带一串参数时,如果 robots.txt 屏蔽了参数模式,搜索蜘蛛可能不会抓取带参数的版本。需要确认是否希望这些参数页被抓取。
- robots.txt 抓取失败:如果 robots.txt 返回 5xx,部分爬虫会暂时保守处理,可能减少抓取;如果返回 404,通常视为没有限制。但这不代表可以随意依赖异常状态。
怎么排查和调整
- 用搜索资源平台提供的 robots.txt 测试工具,分别测试入口页和目标 URL 是否被允许抓取。
- 查看服务器日志,确认搜索蜘蛛是否请求过入口页,以及是否请求过目标 URL。如果入口页有抓取记录,但目标 URL 没有,robots.txt 限制是常见原因之一。
- 检查页面源码中的 meta robots、链接的 rel 属性、以及 HTTP 响应头里的 X-Robots-Tag。
- 如果确认是误屏蔽,调整 robots.txt 后,等待爬虫重新抓取入口页并跟进链接。不要指望立即生效。
- 同时保留其他发现路径,比如 sitemap、站内链接、外部链接和搜索资源平台的 URL 提交。它们不能保证收录,但能增加被发现的机会。
robots.txt 是抓取开关,不是收录开关。入口页链接被屏蔽,等于在发现环节就踩了刹车。
蜘蛛池运营中的实际建议
如果你用蜘蛛池做 URL 发现,至少要让入口页和目标 URL 都处于可抓取状态。入口页可抓、目标 URL 被屏蔽,相当于只完成了“看见链接”这一步,却没有完成“抓取目标”这一步。对于希望被搜索蜘蛛处理的 URL,不要用 robots.txt 去屏蔽它;如果只想限制某些后台或参数路径,规则要尽量精确,并定期用日志和测试工具验证。
最后提醒一句:即使 robots.txt 没有屏蔽,搜索蜘蛛是否抓取、是否收录,还受内容质量、站点权重、抓取配额等因素影响。robots.txt 只是其中一个基础环节,做好它不能保证结果,但做错它会直接切断路径。