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 只是其中一個基础环节,做好它不能保證结果,但做错它會直接切断路径。