如何屏蔽百度蜘蛛:robots.txt 与 HTTP 请求拦截
robots.txt 用于请百度蜘蛛停止抓取;HTTP 拦截规则用于拒绝匹配的请求。先按目标选择方法,再验证结果。仅凭 Baiduspider 这个 UA 名称,不能确认请求来自百度。
Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
一览
| 类型 | 搜索引擎爬虫 |
| 运营方 | 百度 |
| 用途 | 百度搜索的网页抓取 |
| 版本 | 2.0 |
| robots.txt 标识 | Baiduspider |
| 如何核验 | 反向 DNS 主机名以 .baidu.com 或 .baidu.jp 结尾并能正向解析回同一 IP;百度不公布 IP 段。 |
在 robots.txt 里放行或屏蔽
禁止 Baiduspider 抓取全站
User-agent: Baiduspider
Disallow: /重新放行
User-agent: Baiduspider
Allow: /
如何通过 robots.txt 屏蔽百度蜘蛛
把上方 Baiduspider 规则合并到网站根目录的 robots.txt,例如 https://example.com/robots.txt。保留其他爬虫已有的规则;Disallow: / 表示请百度蜘蛛停止抓取全站。
只屏蔽某个目录时,可以改为 /private/ 等路径。这组规则针对 Baiduspider,不会要求所有搜索引擎停止抓取。屏蔽会影响百度更新页面内容,但不能保证已经被发现的网址立即从搜索结果消失。
User-agent: Baiduspider
Disallow: /private/
如何通过 Cloudflare 拒绝百度蜘蛛请求?
对于经 Cloudflare 代理流量的主机名,在 Security rules 中选择 Create rule > Custom rules,填写下方表达式。把 example.com 换成需要保护的主机名;如需同时覆盖 www,应另外添加相应主机条件。选择 Block,才能拒绝匹配的 HTTP 请求,而不是只请爬虫停止抓取。
部署前检查主机名与匹配范围。UA 可以伪造:这条规则匹配的是自报名称,不是经过确认的百度身份。私密内容仍应使用身份验证保护。
(http.host eq "example.com" and lower(http.user_agent) contains "baiduspider")
测试 HTTP 拦截,并对比普通请求
把 example.com 换成自己的主机名后,运行以下两条命令,并在 Cloudflare Security Events 中核对匹配规则。采用 Block 时,匹配请求应被拒绝,默认拦截状态为 403;对照请求应保留普通访客原本应有的访问结果。
单看 403 不能证明这条规则命中,因为其他安全规则也可能拒绝请求。修改测试 UA 只是检验匹配条件,不是验证或冒充真实的百度蜘蛛。
curl -I -A "Baiduspider" https://example.com/
curl -I -A "UA-rule-check/1.0" https://example.com/
检查 robots.txt,并验证请求来源
先直接打开公开的 robots.txt,确认成功返回预期规则,再查看服务器访问日志中的后续请求。robots 规则依赖爬虫遵守,不是访问控制;私密内容应使用身份验证保护。
UA 中包含 Baiduspider 也可能是伪装。需要验证请求时,对来源 IP 做反向 DNS 检查,再将得到的主机名正向解析回原 IP。仅凭 UA 名称不能确认请求来自百度。
逐段拆解
| 片段 | 含义 |
|---|---|
Mozilla/5.0 | 历史兼容标记。几乎所有浏览器都自称 "Mozilla/5.0",以免老旧服务器返回残缺页面。 |
compatible | 兼容性标记——早年由 IE 发送,如今多见于爬虫。 |
Baiduspider/2.0 | Baiduspider 2.0 —— 自动化爬虫/机器人,不是真实浏览器。 |
+http://www.baidu.com/search/spider.html | 爬虫运营方提供给站长的说明页地址。 |
在代码里使用
curl
curl -A "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" https://example.comPython (requests)
import requests
requests.get("https://example.com", headers={"User-Agent": "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"})Playwright (Node.js)
const context = await browser.newContext({ userAgent: "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" });
来源:轻松两步,教你快速识别百度蜘蛛(User-Agent) · 百度:robots.txt 与蜘蛛屏蔽说明 · Cloudflare:创建自定义规则 · Cloudflare:规则语言函数 · RFC 9309:Robots Exclusion Protocol · 核对于 2026年9月