我们做了一件很简单、但很少有人真去做的事:把同一个网址,用不同的 User-Agent 各敲一次门。
浏览器身份,进得去;换成 GPTBot、OAI-SearchBot、PerplexityBot、ClaudeBot 这四个 AI 爬虫的官方 UA 字符串,同一个网址、同一分钟、同一台服务器,返回 403。
而它们的 robots.txt 里,一个字都没写禁止。你打开网站地图检查、打开 robots 检查、让技术同事"确认一下允许抓取",全部显示绿灯——门是焊死的,但门牌写着"欢迎光临"。
这不是个例。我们在两个节点(广州、新加坡)对 48 个越南品牌官网、8 个行业,用 6 个身份逐一取页。结论先说:robot.txt 不是那道门,WAF 才是。
一、四句话结论
- 禁抓令几乎没人写。能读到 robots.txt 的 30 个站点里,0 个禁止我们测试的四个 AI 爬虫;只有 3 个在 robots 里提到了任何一个 AI 爬虫的名字(其中 1 个提了名字却在 WAF 关门)。
- 但门确实存在。两个节点都可达的 31 个站点里,5 个(16.1%)对至少一个 AI 爬虫返回 403,其中 4 家对四个 AI 身份中的至少三个返回 403。同一时刻,浏览器身份拿到的都是 200。
- 403 有三张脸,处理方式完全不同。"只封 AI 爬虫""封所有未验证机器人""整站对该地区 403"——三种情况的修法互相冲突,混在一起谈就等于没谈。
- 文档做得最好的那个,门关得最死。48 个站点里只有 3 个有真正的
llms.txt,其中一份 101 KB、写得相当认真——但它的首页从广州和新加坡都返回 403。
二、实验设计:能锁的变量全部锁死
| 变量 | 设定 | 为什么必须这样 |
|---|---|---|
| 样本 | 48 个越南域名,8 个行业 × 6 家(零售电商 / 银行 / 保险 / 物流 / 制造建材 / 汽车两轮 / 医药连锁 / 餐饮消费) | 单行业会撞上同一家 WAF 供应商,结论会被供应商绑架 |
| 节点 | 广州(阿里云 ECS)、新加坡(阿里云轻量),同一小时内各跑一遍 | 只为回答一个问题:这是"机器的门"还是"地区的门" |
| 身份 | Chrome(基线)、GPTBot/1.2、OAI-SearchBot/1.0、PerplexityBot/1.0、ClaudeBot/1.0;第二轮追加 Googlebot/2.1 与 bingbot/2.0 | UA 是 WAF 唯一稳定可读的"你是谁",必须逐个单独测 |
| 请求 | 每个身份各取一次首页,GET,超时 15 秒,不重试、不带 Cookie、不执行 JS | 带重试会把 429 抹平;执行 JS 会把挑战页当成正常页 |
| 判定 | 浏览器 2xx 才算"站点活着";四个 AI 身份全 200 才算"四门全开" | 避免把"站点挂了"误记成"WAF 封了 AI" |
三、第一层门:robots.txt —— 30 份文件,0 份禁抓
先说好消息。越南品牌站的 robots.txt 里,几乎没有人主动禁止 AI 爬虫:
这个结果和很多人的直觉相反。大家担心的是"我的客户会不会一时糊涂把 AI 关了",实测下来,越南市场还没走到那一步——连提都没提,更别说关。真正的问题在后面两节。
robots.txt 是一份"君子协定":它约束的是愿意遵守它的爬虫。它拦不住任何东西,也放行不了任何东西。把它当成安全边界,等于把"请勿入内"的木牌当成防盗门。
四、第二层门:WAF —— 31 家里 5 家,机器进不去
把"两个节点中至少一个能用浏览器打开"作为存活判据,48 个域名里 31 个可测,17 个两节点都打不开(原因见第六节)。在这 31 家里:
5 家"有门"的站点,全部是品类里最该被 AI 引用的那种:
| 站点 | 行业 | 浏览器 | GPTBot | OAI-SearchBot | PerplexityBot | ClaudeBot |
|---|---|---|---|---|---|---|
| highlandscoffee.com.vn | 餐饮连锁 | 200 | 403 | 403 | 403 | 403 |
| pharmacity.vn | 连锁药房 | 200 | 403 | 403 | 403 | 403 |
| techcombank.com.vn | 银行(新加坡节点) | 200 | 403 | 403 | 403 | 403 |
| nhathuoclongchau.com.vn | 连锁药房(广州节点) | 200 | 403 | 403 | 超时 | 403 |
| bic.vn | 保险(新加坡节点) | 200 | 403 | 200 | 200 | 403 |
请注意最后一行。BIC 的配置是「封训练、放检索」:GPTBot(用于模型训练抓取)和 ClaudeBot 被拒,但 OAI-SearchBot(OpenAI 搜索索引)和 PerplexityBot 放行。这是一种很理性的选择——不把自己的内容喂给训练集,但愿意被搜索引用。
这个细节说明:WAF 的 AI 策略不是"一键开关",是可以按用途分档的。真正的问题在于,绝大多数站点用的是默认档,而默认档在东家眼里通常是"全都别来"。
五、同一串 403,三种含义,三种修法
这是本文最实用的一节。同样一个 403,用第二轮差分测试(追加 Googlebot 与 bingbot 身份)可以分成三类,处理方式完全相反:
| 类型 | 指纹 | 说明 | 修法 |
|---|---|---|---|
| A · 只封 AI | 浏览器 200 · Googlebot 200 · GPTBot 403 | 站点明确按用途分策,传统搜索照旧、AI 关门。样本中 bic.vn 属此类 | 改 WAF 的 AI 爬虫策略:保留训练抓取禁令可以,但要放行检索类(OAI-SearchBot、PerplexityBot) |
| B · 封所有未验证机器人 | 浏览器 200 · Googlebot 403 · GPTBot 403 | "按 IP 验证机器身份"的默认策略:真 Googlebot 从 Google 的 IP 段来所以过得去,AI 爬虫不在白名单里,一律挡。样本 4 家属此类 | 把 AI 爬虫加入 Verified Bots / 白名单,或在 WAF 里为它们开独立放行规则 |
| C · 整站对该地区拒绝 | 浏览器 403 · 所有身份 403 | 不是针对 AI,是针对来源 IP:威胁情报库、地理封锁、机房 IP 段拦截。样本 5 家属此类(含 2 家 CloudFront "Request blocked"、1 家 Akamai "Access Denied") | 这条与 GEO 无关、与出海有关:如果你的 AI 抓取代理来自被封的地区,你的内容永远进不了语料 |
方法诚实声明:我们用的是官方公开的 UA 字符串,不是真实爬虫的 IP。所以"B 类"里的 Googlebot 403 不能推断成"它屏蔽了 Google"——正相反,它恰恰说明这个 WAF 在按 IP 验证机器身份:真的 Googlebot 从 Google 的 IP 段过来会通过,而任何自称 Googlebot 却不是 Google 的请求一律挡掉。而 AI 爬虫连这个白名单通道都没有,这才是问题所在。同理,A 类里 GPTBot 403 是可信的:WAF 挡的就是这个 UA 字符串,OpenAI 的爬虫带着同样的字符串来,也一样被挡。
六、第三层门:地区的门 —— 同一条 URL,广州 403、新加坡 200
这一层最容易被忽略,却对中国出海企业最要命。
同一分钟、同一个域名、同一个 UA:
- bic.vn:广州节点 403,新加坡节点 200(且放行了两个检索型 AI 爬虫)
- techcombank.com.vn:广州节点连不上(连接被重置),新加坡节点 200
- prudential.com.vn:广州节点不可达,新加坡节点 200,还是一份 19.9 KB 的真 llms.txt
- 反向也有 1 例:nhathuoclongchau.com.vn 广州 200、新加坡 403
48 个域名里,17 个(35.4%)广州和新加坡都打不开:其中 5 家返回 Cloudflare / CloudFront / Akamai 的拦截页,其余是连接重置、超时、DNS 无响应。这里面既有越南本地大站(电商、消费电子零售),也有重工业企业官网。
含义很直接:"我能打开我的官网"不构成任何证据。你在河内打开是 200,OpenAI 的抓取节点在法兰克福、Perplexity 的在弗吉尼亚、Google 的在加州。你测的是你自己,不是它们。
七、llms.txt 的三种假象:3 份真文件,9 份假的
我们顺手核了 llms.txt——AI 爬虫的"站点说明书"。麻烦在于,HTTP 200 不等于有这份文件。
| 表现 | 真相 | 样本 |
|---|---|---|
200,text/plain,正文以 # 开头 | ✅ 真 llms.txt | prudential.com.vn(19.9 KB)、ahamove.com(1.5 KB)、vinfastauto.com(101 KB) |
200,177 字节,内容是一段 document.cookie=... 脚本 | ❌ WAF 挑战页伪装成 200——最坑的一种,抓取方会把它当成"文件存在但内容为空" | 2 家(银行与快递,都是大站) |
200,但 text/html,返回的是首页 | ❌ SPA 路由兜底,任何不存在的路径都回首页 | 6 家以上(含多家银行与消费品牌) |
所以:48 个站点,真 llms.txt 只有 3 份,占 6.25%。而这个比例还是"乐观口径"——如果只算前端路由正常的站,9 份"假 llms.txt"里没有任何一份是真的。
更值得玩味的是那份 101 KB 的 llms.txt:写得相当认真,把品牌、车型、政策、渠道全列了。但它的首页,从广州和新加坡都返回 403。说明书贴在了门外,门是锁的。
八、为什么会这样:三个真实成因
1. 默认配置就是"别来"
主流 CDN/WAF 在 2024 年之后陆续上线了"屏蔽 AI 抓取"的一键开关,部分厂商的默认值偏保守。站点管理员什么都没做,门就已经关了一半。你问运维"我们封了 AI 吗",他会查 robots.txt,然后回答"没有"——他查的地方和门所在的地方,不是同一个地方。
2. 安全团队的 KPI 与增长团队的 KPI 相反
安全看的是"异常请求数、带宽、被爬次数",AI 爬虫在报表上就是一个爬虫,多挡一个就少一分风险;增长看的是"AI 里有没有我们"。两边都没错,只是没人负责"被引用"这个指标,于是它归零了。
3. 把"训练抓取"和"检索引用"当成一回事
GPTBot(训练)、OAI-SearchBot(搜索索引)、PerplexityBot(实时检索)、ClaudeBot(训练+引用),这四个的商业后果完全不同:禁止训练是版权姿态,禁止检索是自断客源。多数站点一刀切,等于用版权姿态换来了商业损失。
九、60 秒自测:把上面的实验在你自己的站上跑一遍
不用装任何工具,一台能联网的机器、三条命令:
# 1) 基线:浏览器身份
curl -s -o /dev/null -w "browser %{http_code}\n" https://你的域名/
# 2) AI 检索类爬虫(这两个决定你能不能被 AI 引用)
curl -s -o /dev/null -w "GPTBot %{http_code}\n" \
-A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.2; +https://openai.com/gptbot" \
https://你的域名/
curl -s -o /dev/null -w "PerplexityBot %{http_code}\n" \
-A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot" \
https://你的域名/
# 3) 说明书是不是真的
curl -sI https://你的域名/llms.txt | head -3
判读规则:浏览器 200 而 AI 身份 403 → 门在 WAF,去改策略,不要改 robots;连浏览器都 403 → 你在测地区,不是测 AI,换节点再测;llms.txt 返回 text/html → 视为没有。
十、修复清单:按 30 分钟排
- (5 分钟)先测,留证据。把上面三条命令的输出存成一份带日期的记录。以后每次改 WAF 都能对比。
- (10 分钟)WAF 里放行检索型 AI 爬虫。在 Cloudflare 等平台找 "AI Crawlers / Verified Bots" 面板,把
OAI-SearchBot、PerplexityBot、Claude-SearchBot设为 Allow;训练类(GPTBot、CCBot、Google-Extended)保留你的版权姿态。这是"想被引用、不想被训练"的唯一正确切法。 - (5 分钟)robots.txt 写显式 Allow。不要只靠"没写禁止",写清楚:
User-agent: OAI-SearchBot Allow: / User-agent: PerplexityBot Allow: / User-agent: Claude-SearchBot Allow: / - (10 分钟)放一份真 llms.txt。纯文本,开头
# 品牌名,写清:你是谁、做什么、覆盖哪些地区、关键事实页的绝对 URL、更新日期。放在根目录,用text/plain返回,别被前端路由吃掉。 - (每月 1 次)复测。WAF 规则会被"安全加固"改回去;默认策略会随平台升级变化。门禁是活的,不是一次性工程。
十一、这件事在 GEO 里的位置
GEO 常被理解成"写更多内容"。但这条链是有顺序的:
抓得到 → 读得懂 → 信得过 → 被引用。前两步是门禁与结构,后两步才是内容与信源。门禁不过,后面三步的努力在 AI 眼里等于不存在。
这也是为什么我们把它放在方法论第一位:Gartner(2024-02)预测 2026 年传统搜索量下降 25%,Bain 的数据是 80% 的消费者至少 40% 的搜索已经依赖 AI 结果,艾媒咨询(2026-02)把中国 GEO 市场从 2025 年的 349.3 亿元算到 2026 年预计 942 亿元——这些数字描述的是流量在迁移。而 Technode(2025-08)测出越南 ChatGPT 覆盖率 81%,说明这个迁移在越南已经发生。
流量迁到哪,门就该对哪开。当 35.4% 的站点连"机器来取一次"都做不到,讨论"AIGC 内容怎么写"就是空中楼阁。
十二、边界与免责
必须把话说全,否则这篇就成了营销稿:
- 单时点。2026-10-31 一小时内、每个身份各取一次首页,没有重复采样。WAF 规则会变,今天的 403 明天可能变 200,反之亦然。
- 测的是首页。首页 403 不代表全站 403(内页可能放行),首页 200 也不代表内页不拦。
- UA 身份 ≠ 真实爬虫。见第五节的说明:B 类站点对 Googlebot 的 403 是 IP 验证的结果,不是屏蔽 Google。
- 不排名、不点名扣分。本文只用域名说明技术现象,不做优劣排序,也不接受任何一方付费影响结果。被列出的站点在本文语境中是"技术样本",不是"差生"。
- 两个节点都不是 AI 爬虫的真实出口。广州与新加坡只用于对比"地区门"是否存在,不能代表 OpenAI / Perplexity 的实际抓取路径。
把门打开,比把内容写好便宜得多,也快得多。而绝大多数时候,没人知道门是关着的。