搜索引擎爬虫进入一个网站时,首先读取的文件往往是根目录下的 robots.txt。这个纯文本文件就像是网站的门禁系统,清晰地告诉爬虫哪些区域可以自由进出,哪些地方需要止步。合理的 robots.txt 配置,既能避免后台、测试环境等敏感页面被收录,也能让爬虫将有限的抓取预算集中到真正有内容价值的页面上。
robots.txt 文件必须存放在网站根目录,比如 https://yourdomain.com/robots.txt。文件需要用 UTF-8 编码,每一条指令占一行,路径区分大小写,这些细节都直接影响规则是否生效。
一份标准文件通常由四个字段组成:
下面是一个典型的配置样例:
User-agent: *
Disallow: /private/
Allow: /private/shared/
Sitemap: https://yourdomain.com/sitemap.xml
这段规则的含义是:所有爬虫都可以进入,但 /private/ 目录禁止访问,唯一的例外是 /private/shared/ 子目录。值得注意的是,Allow 指令并非所有爬虫都认识,遇到不支持的爬虫时,更严格的 Disallow 会继续生效。
不同类型的网站对爬虫抓取的诉求差异很大,下面是三种典型需求及其配置思路。
对于依赖内容收录的新站或资讯站点,通常希望爬虫畅通无阻地遍历所有页面。此时只需声明一个空的 Disallow 即可:
User-agent: *
Disallow:
完全省略 Disallow 这一行效果也是一样的。最典型的手误就是把 Disallow 写成 /,一旦如此,所有爬虫会立刻停止抓取,整站收录随之中断,这是新手最容易踩的坑。
当需要针对某个特定搜索引擎做限制时,可以为它单独写一份规则:
User-agent: Baiduspider
Disallow: /
这份配置只对百度爬虫生效,其他搜索引擎的访问不会受到影响。在动手之前,最好去各搜索引擎的官方文档核对爬虫的准确名称,常见的还有 Googlebot、Bingbot 等,名字写错规则就不起作用了。
大多数网站都不希望后台登录地址、临时测试目录出现在搜索结果里,这时可以用以下写法:
User-agent: *
Disallow: /admin/
Disallow: /tmp/
Disallow: /test/
多个 Disallow 行可以同时出现,每个路径独占一行。这里需要注意,虽然 robots.txt 能阻止收录,但并不会让这些目录在互联网上完全消失,真正的访问控制还需要依赖服务器端的身份验证。
许多站点管理员在配置 robots.txt 时会走入一些误区,这里说三个最常见的。
误区一:用它来防止敏感信息泄露。robots.txt 只是君子协定,爬虫自愿遵守,恶意程序根本不会理会它。涉及真实隐私的数据,必须通过登录验证、IP 白名单等方式来保护。
误区二:认为它能降低服务器压力。爬虫在访问 robots.txt 之后,仍然会对允许的页面发起大量请求。如果服务器负载过高,正确做法是调整抓取速率设置,而不是试图用规则硬扛。
误区三:频繁修改规则导致收录不稳定。搜索引擎重新抓取 robots.txt 需要一定时间,频繁变动会让爬虫无所适从,甚至影响原有页面的正常收录。规则确认无误就尽量保持稳定,不要朝令夕改。
写完 robots.txt 不能直接宣布完成,还需要验证规则是否符合预期。一个简单有效的方法是直接访问 https://yourdomain.com/robots.txt,在浏览器中查看内容是否正确显示。如果返回 404 或出现乱码,说明文件路径或编码有问题。
更严谨的做法是借助搜索引擎的站长工具进行测试。以 Google 为例,Search Console 中提供了 robots.txt 测试器,可以模拟爬虫抓取并检查指定链接是否被允许访问。百度搜索资源平台也提供类似的功能。测试时建议多选取几个典型路径,比如首页、被屏蔽的目录和允许访问的子目录,确认各自的抓取状态都符合预期。
不是。文件应该尽量精简,只包含必要规则。过长的文件不仅增加爬虫读取负担,也容易发生语法错误。建议控制在几十行以内,只需要明确核心的 Disallow 和 Allow 规则即可。
生效时间因搜索引擎而异,短则数小时,长则数天。搜索引擎会周期性地重新抓取 robots.txt 文件,你无法强制其立即刷新。修改后保持耐心,并在一段时间后通过站长工具确认爬取状态的变化。
以 Google 为例,Allow 指令的优先级高于 Disallow,也就是说当两者冲突时,Allow 规则胜出。但这是 Google 的逻辑,其他搜索引擎可能不同。对于不识别 Allow 的爬虫,Disallow 则始终优先。因此,依赖 Allow 特性的站点需要接受搜索引擎之间的行为差异。
robots.txt 配置的核心在于理解语法、明确需求、避免误区。建议在动手前先梳理清楚网站的目录结构,明确哪些路径必须开放、哪些严格封锁,再针对性地写出规则。配置完成后,利用爬虫模拟工具验证每个关键路径的访问状态。最后提醒一句:robots.txt 是抓取管理的工具,不是安全防线,敏感数据的保护永远需要更底层的访问控制手段来兜底。