Nicasia Digital Solutions

现场笔记 · 增长引擎

ChatGPT、Claude 读得到你的网站吗?一行命令自己查

我们的 robots.txt 写着欢迎所有爬虫,Cloudflare 却回了 GPTBot 一个 403,还把邮箱对 AI 爬虫藏了起来。各家 AI 爬虫做什么,以及一行命令自己查。

2026 年 9 月 19 日,我们用 AI 爬虫的身份打开自己的一个网站。它的 robots.txt 写着欢迎所有爬虫。Googlebot、Bingbot、OAI-SearchBot、PerplexityBot 都拿到了页面;GPTBot、ClaudeBot、CCBot 拿到的却是 Cloudflare 回的 25 个字节纯文字:「Your request was blocked.」

9 月 30 日,我们在这个网站 nicasiadigital.com 上又发现一个更不起眼的缺口:每个爬虫都打得开页面,但页面上的邮箱,到了它们手里变成「[email protected]」。

这两个设定都不是我们打开的,都是 Cloudflare 自带的。用浏览器看网站,两个都看不出来:浏览器拿得到页面,也会执行那段把邮箱还原的脚本。

每个爬虫各做什么

做 AI 助手的公司,每家都不只一个爬虫,每个爬虫喂的东西不一样。挡掉一个,可能损失很大,也可能毫无影响,要看挡的是哪一个。下表整理自各家公司自己的说明文件(2026 年 9 月)。

爬虫公司读你的网站做什么
OAI-SearchBotOpenAI让你的页面出现在 ChatGPT 搜索的回答里
GPTBotOpenAI训练以后的模型
ChatGPT-UserOpenAI用户叫 ChatGPT 打开某一页时,由它去打开
Claude-SearchBotAnthropic改进 Claude 的搜索结果
ClaudeBotAnthropic训练以后的模型
Claude-UserAnthropic用户叫 Claude 打开某一页时,由它去打开
PerplexityBotPerplexity在 Perplexity 的回答里列出并链接网站;Perplexity 说它不拿这些来训练
Perplexity-UserPerplexity回答问题途中打开页面;它一般不理会 robots.txt
Google-ExtendedGoogle只是 robots.txt 里的一个名字,背后没有爬虫:它决定 Gemini 能不能拿你的页面来训练、来支撑回答
CCBotCommon Crawl一个公开的网页档案库,AI 公司拿它训练过模型

说明文件里最要紧的是两点。OpenAI 写明:挡掉 OAI-SearchBot 的网站,不会出现在 ChatGPT 搜索的回答里;挡掉 GPTBot,只是让页面不进训练。Google 写明:Google-Extended 不影响 Google 搜索。

所以 9 月那个网站,ChatGPT 搜索其实还读得到,因为 OAI-SearchBot 进得来。我们损失的是训练这一块:下一代模型对这个网站会知道得更少。

在自己的电脑上测

下面这段命令用每个爬虫的名字去打开你的首页,印出状态码。Mac 的终端机和 Linux 都能直接跑;Windows 用 Git Bash。把网址换成你的。

for b in Googlebot bingbot GPTBot \
    OAI-SearchBot ChatGPT-User ClaudeBot \
    Claude-SearchBot Claude-User \
    PerplexityBot CCBot; do
  echo "$b $(curl -s -o /dev/null \
    -w '%{http_code}' -A \
    "Mozilla/5.0 (compatible; $b/1.0)" \
    https://www.example.com/)"
done

9 月 30 日马来西亚时间 11:05,nicasiadigital.com 对这十个名字全部回 200。200 表示爬虫拿到了页面;403 或 503 表示网站前面有东西把它挡了,不管 robots.txt 怎么写。不想开终端机的话,我们的免费爬虫检测在网页上就能跑同样的测试,连同这篇文章后面几项检查。

这个测法有一个局限:名字是从你的电脑送出去的,有些防火墙还会查请求从哪里来,所以真正的爬虫可能被另外对待。看到 200,算是好消息;看到 403,一定要追:我们 9 月那次的 403,对应的正是一个连真爬虫也会挡掉的设定。

Cloudflare 的开关在哪里

从 2025 年 7 月 1 日起,每个新加入 Cloudflare 的域名,注册时都会被问要不要让 AI 爬虫进来,而且默认是挡。我们那个域名是 2026 年 9 月 2 日搬进 Cloudflare 的,17 天后训练用的爬虫还在被挡。

在后台打开那个域名,依次点 Security、Settings,找到 Bot traffic 那一组。「Configure AI bot policies」里有三行:Search、Agent、Training。我们的是 Allow、Allow、Disallow,回 403 给 GPTBot、ClaudeBot、CCBot 的就是 Training 那一行。9 月 19 日 15:10 我们把它改成 Allow,再跑一次上面的命令,当天测的九个名字全部 200。

同一个面板最下面有个「Enable Bot Preference Sync」,开了之后 Cloudflare 会往你的 robots.txt 里写它自己的规则。我们让它关着:网站本来就有自己的 robots.txt,两套规则迟早会打架。

爬虫读不到的邮箱

这个域名的 Cloudflare「Email Address Obfuscation」(邮箱加密)是开着的,我们没开过它。它把页面上每个邮箱换成一个指向 /cdn-cgi/l/email-protection 的链接,外加「[email protected]」几个字,再用一段小脚本在访客的浏览器里把真邮箱放回去,所以人完全看不出来。

爬虫如果只读 HTML、读完就走,拿到的就是「[email protected]」。Vercel 和 MERJ 在 2024 年 12 月的研究发现,GPTBot、ClaudeBot、PerplexityBot 抓页面时都不执行 JavaScript,所以对它们来说,这个邮箱等于不存在。

我们没关这个设定,改的是页面。Cloudflare 会跳过 <!--email_off--> 和 <!--/email_off--> 之间的内容,所以现在建站时每个邮箱都包在这两个注释里。直接把整个域名的这项功能关掉也行。<script> 标签里和 <head> 里的邮箱本来就不会被改,所以我们结构化资料里的邮箱一直读得到。

要查你的网站,就用爬虫的方式打开联系页,数一数 Cloudflare 的加密标记:

curl -s https://www.example.com/contact \
  -A "Mozilla/5.0 (compatible; GPTBot/1.0)" \
  | grep -c "email-protection"

只要大于 0,这一页就至少有一个邮箱是爬虫读不到的。我们的联系页现在印出来的是 0。

爬虫还会漏掉什么

同一份研究发现,Gemini(通过 Googlebot)和 AppleBot 会执行 JavaScript;它测到的 OpenAI、Anthropic、Perplexity 的爬虫都不会。所以凡是网站在脚本跑完之后才加上去的东西,这三家都看不到:用脚本载入的价格、在浏览器里才生成的菜单、小工具带进来的评价,有时甚至是整个页面。想知道它们看到什么,就用 curl 抓页面,在输出里找你在意的那几个字。

我们每次上线后都查的清单

  • robots.txt 允许你想要的爬虫。User-agent: * 底下写着 Allow: / 的话,没点名的爬虫也算允许。
  • 上面那段命令里每个名字都回 200。
  • 用 Cloudflare 的话,AI bot policies 跟 robots.txt 说的是同一件事。
  • 主要的文字、价格、联系方式,在脚本执行之前就已经在 HTML 里。
  • 用 curl 查得到你的邮箱。
  • sitemap 列出每一页,日期只在那一页的文字真的改了才变。

nicasiadigital.com 每次上线后我们都跑一遍这些检查,没过的项目脚本会列出来。想让我们在你的网站上也跑一遍,私人诊断 就包括在内。

资料来源

更多现场笔记

先从一张表开始

告诉我们团队的时间都花在哪里,24 小时内收到书面诊断。

预约私人诊断