蜘蛛池知识

蜘蛛池入口页的 robots.txt:别把想请的蜘蛛挡在门外

robots.txt 是爬虫进入站点时最先读的文件之一,写错几个字符就可能把入口页的抓取路径整段切断。本文梳理 User-agent 分组、Allow 与 Disallow 的匹配逻辑,列出全站屏蔽、通配符误用、状态码异常等常见坑,并给出一份可直接照着走的检查清单。

蜘蛛池知识

蜘蛛池入口页的 robots.txt:别把想请的蜘蛛挡在门外

robots.txt 是爬虫访问一个站点时最先请求的文件之一。对蜘蛛池来说,入口页本身就是为了让蜘蛛发现链接,如果这份文件写错,等于在门口挂了一块“不欢迎”的牌子。它不复杂,但几个字符的差别就可能把想请的蜘蛛挡在外面,或者把不该放行的路径全部敞开。

蜘蛛先读 robots.txt,再决定抓什么

主流搜索引擎爬虫在抓取一个域名前,会先请求 /robots.txt。文件里按 User-agent 分组,每组下面写 Allow 和 Disallow 规则。同一个 UA 有多条规则匹配同一路径时,一般按“最长匹配优先”判断,长度相同时 Allow 优先。不写 User-agent 或者用 *,表示对所有爬虫生效。

需要注意,robots.txt 只是一种约定,不是访问控制。它挡不住恶意采集,也不决定页面是否被索引——想让页面彻底不出现,还得配合 noindex 或状态码处理。

三种常见写法与它们的后果

全站 Disallow

测试环境遗留的 Disallow: / 被带到正式入口页上,是最常见的低级错误。蜘蛛仍然可能访问首页拿到文件,但读到规则后就不再深入抓链接,入口页里的外链自然拿不到发现机会。

屏蔽参数与后台路径

入口页如果带筛选参数、分页参数,或者站内有搜索、登录、后台这类路径,用 Disallow 把它们排除掉是合理的。这样可以把有限的抓取配额留给真正想被发现的页面。

声明 Sitemap

在文件末尾写上 Sitemap: 并给出完整 URL,相当于给蜘蛛多一条发现路径。它不是必须的,但对收录慢的站点算是一个低成本的补充。

几个容易踩的坑

  • 通配符用反了:* 匹配任意字符,$ 表示结尾。写 Disallow: /*? 想屏蔽参数,结果可能把带问号的正常页面一起挡住。
  • 忘记 Allow 兜底:写了一大段 Disallow 又想在中间放行某个目录,必须显式写 Allow,否则不会自动开放。
  • 路径写错层级:robots.txt 只对同级及以下目录生效,放在子目录里对整站无效。
  • 返回状态异常:返回 404 通常被视为无限制;返回 5xx 时蜘蛛一般会暂停抓取,反复 5xx 可能压低抓取频率。
  • UA 名字写错:不同爬虫的 UA 标识不同,名字写错规则不会生效,需要按爬虫分别设置。
  • 把它当收录开关:屏蔽抓取不等于删除已收录页面,这两件事经常被混为一谈。

一份可以照着走的检查清单

  1. 直接在浏览器访问 /robots.txt,确认返回 200 且内容是最新版,不是旧缓存或 CDN 上的旧文件。
  2. 通读一遍,找出有没有 Disallow: / 这类全站屏蔽的残留。
  3. 确认想被发现的目录、入口页所在路径没有被误挡。
  4. 确认参数页、后台、搜索结果页等低价值路径已被排除。
  5. 检查通配符和结尾符号是否符合本意。
  6. 如果启用了 Sitemap 声明,确认地址可访问、内容可解析。
  7. 改动后观察一段时间日志,看蜘蛛请求量和抓取路径是否按预期变化。

别把它当成收录开关

robots.txt 影响的是“能不能抓”,而抓取只是收录链条里的一环。抓到了不代表一定收录,收录了也不代表有排名。把入口页的链接结构、内容质量和更新节奏一起处理好,比反复修改 robots.txt 更实际。改完记得留一份版本记录,出问题时能快速回滚。

提醒:任何规则调整后都建议先小范围验证,再全站应用,避免一次改动把入口页的抓取路径全部切断。