搭建蜘蛛池时,大家更关心域名、IP、入口页数量,robots.txt 往往是最后才想起来的一步。但这个小文件决定了蜘蛛在入口页能走多远——写错了,前面的投入很可能被限制在很小的范围里。
robots.txt 在蜘蛛池里到底管什么
robots.txt 是放在站点根目录下的纯文本文件,作用是告诉爬虫哪些路径可以抓、哪些不建议抓。它本身不是访问控制,抓不抓最终还是看爬虫自己的选择:主流搜索引擎会遵守,但并不是所有抓取行为都会买账。
在蜘蛛池场景里,它主要影响两件事:一是蜘蛛进入入口页后会不会顺着链接继续往下走;二是抓取配额会不会被大量无意义路径消耗掉。
入口页常用的几种放行策略
- 全站放行:Disallow 留空,适合入口页本身就是链接集合、需要蜘蛛尽可能多遍历的结构。
- 只放行必要目录:把后台、站内搜索结果页、参数拼接页挡掉,减少抓取浪费。
- 限制低价值动态路径:带大量参数的 URL 容易被判定为重复内容,可以在规则里做限制。
- 保留 Sitemap 声明:用一行 Sitemap 指向站点地图,方便蜘蛛发现入口页。
meta robots 与 X-Robots-Tag 的区别
robots.txt 只能控制能不能抓,管不了抓了之后要不要收录。如果入口页本身不希望被收录,又希望蜘蛛继续沿着链接往下走,用 meta robots 的 noindex, follow 更合适。对于图片、PDF 这类没法写 meta 标签的资源,可以用 HTTP 响应头里的 X-Robots-Tag 达到类似效果。
要注意的是,noindex 必须让蜘蛛抓到页面本身才会生效。如果 robots.txt 里已经把这条路径 Disallow 了,蜘蛛抓不到页面,noindex 就永远不会被看到。
几个容易踩的坑
- Disallow 写得太宽,用斜杠或过短的前缀误伤入口页,蜘蛛进来后无路可走。
- 路径大小写不一致。robots.txt 里的路径区分大小写,入口页用大写而规则写成小写,等于没挡。
- 用 robots.txt 挡掉 CSS、JS 文件,导致蜘蛛看到的是残缺页面,判断容易出现偏差。
- 多个域名共用一份 robots.txt 却没做区分,规则和实际目录结构对不上。
- 文件返回异常状态码。robots.txt 不存在时蜘蛛通常按全站可抓处理,但如果返回 5xx,部分爬虫会暂缓抓取,反而影响效率。
落地时的几点建议
- 先在浏览器直接访问 /robots.txt,确认返回正常且内容是你以为的那一份。
- 改动后观察抓取日志,看被挡路径的访问量是不是真的降下来了,别只改不看。
- 入口页希望被爬但不希望被收录时,优先用 noindex, follow,而不是直接 Disallow。
- 把 robots.txt 的变更和入口页上线节奏对齐,避免新入口刚铺好就被旧规则挡住。
- 规则尽量写得具体,少用大范围通配,方便以后排查问题。
robots.txt 不是用来堆抓取量的工具,它的价值在于把抓取引导到该去的地方。规则越清晰,日志越好读,问题也越容易定位。
最后提醒一句:robots.txt 只是抓取层的一道指示,不保证收录,也不保证排名。把它当成基础设施的一部分,上线前检查一遍,比事后翻日志划算得多。