Hyaika Blog

Penguin is all you need

技术

TIME 给 AI 爬虫看了一个完全不同的网站——带着广告,没有读者

🕸️ TIME 给 AI 爬虫看了一个完全不同的网站——带着广告,没有读者

目录

  • 一个请求,两个网站
  • 技术解剖:User-Agent 如何决定你看到什么
  • Mobian 的「隐形广告」:AI 模型看到的,人看不到
  • 这不仅仅是 TIME 的问题——互联网正在分裂
  • 国内对照:信息分层,不是新鲜事
  • 现场验证:这台服务器里,谁在爬我
  • 所以,AI 看到的世界和你不一样

一个请求,两个网站

Vincent Schmalbach 做了一件很简单的事。

他对着同一个 URL——TIME.com 上的一篇普通健康文章——反复发送 HTTP 请求,每次只改一个东西:User-Agent 头。

结果他拿到了两个完全不同的网站。

作为 Chrome 浏览器访问,他收到 303,235 字节的完整 HTML——排版、图片、脚本、广告,跟你用鼠标点开看到的一样。作为 Safari,一样。作为 Googlebot,也一样。

然后他换了 User-Agent: ClaudeBot。13,409 字节,纯 Markdown,没有排版没有图片,干干净净的文本,像是专门为语言模型准备的投喂格式。

相同的 URL,相同的服务器,同一秒。一个请求,两套世界。

技术解剖:User-Agent 如何决定你看到什么

这不是什么复杂的 AI 动态渲染。TIME 的服务器读到你发来的 User-Agent 字符串,查一个列表,然后决定回什么。

  • ClaudeBottext/markdown,13KB
  • PerplexityBot → 同上,逐字节一致
  • OAI-SearchBot(OpenAI 的搜索爬虫)→ 同上,放行
  • GPTBotChatGPT-User(OpenAI 的训练爬虫)→ 406 Not Acceptable,直接拒绝

所以 TIME 不是简单地「拦所有 AI」或「放所有 AI」。它在逐个决定:谁可以读机器的版本,谁只能吃闭门羹。

响应头里还有更多信息:

content-type: text/markdown; charset=utf-8
cache-control: no-store
x-mobian-registry-version: 2026-07-28.v9
x-mobian-impression: 46dfff3c-fb40-41cc-85e1-8b1fa637083a
x-mobian-tokens: 3323

x-mobian-impression 是一个 UUID,每次请求都不一样。Schmalbach 同一页抓了两次,拿到两个不同的 ID。加上 cache-control: no-store,这意味着——每一次 AI 爬虫读 TIME 的文章,都被记录为一次独立的广告展示

x-mobian-tokens: 3323 告诉你计量单位是什么。不是浏览量,不是访客数。是喂进模型的 token 数

Mobian 的「隐形广告」:AI 模型看到的,人看不到

Mobian 是一家广告技术供应商。而 TIME 给 AI 爬虫的 Markdown 版本里,植入了人类页面上完全不存在的广告。

Schmalbach 以 ClaudeBot 的身份抓取了 TIME 的「2025 最佳发明」合集页面。在返回的 Markdown 里,他看到了这个:

> Sponsored content. Supplied in partnership with Ally.

#### Who is Ally Bank?
Ally Bank is an online-only bank launched in 2009...

#### What bank is built for life today?
Ally describes itself as the only bank built for life today...

一整套 Ally Bank 的 FAQ。五个问答,每个都用 Ally 自己的营销语言回答,附带了 FAQPage JSON-LD 结构化数据,以及 campaign="ally-2026-q3" 的追踪链接。

他用浏览器打开同一个页面,搜索「Ally Bank」「Mobian」「赞助」——零结果。人类页面上完全没有这些内容。

"Who is Ally Bank?" 的措辞,像是用户问 ChatGPT「该开哪家银行账户」时模型会发出的提问。

科技板块也有同样的待遇——项目管理协会(PMI)的「参考事实与 FAQ」表格,认证项目经理收入高 16% 的数据,同样只出现在 AI 版的页面里。

广告标注了「Sponsored」,所以这不是传统意义上的隐性广告。隐藏的是受众分割。现在 TIME.com 上存在一个完全为机器编写的层,而人类读者根本不知道这个层的存在,也不知道 AI 模型替他们看了什么商业信息。

这不仅仅是 TIME 的问题——互联网正在分裂

TIME 说自己绝大部分日子的 bot 流量已经超过人类流量。这不会是个例。

当 AI 爬虫的请求量超过人类读者时,对媒体来说,为机器优化变成了一项理性的商业决策。广告主可以在 AI 模型的回答里植入品牌信息——不是通过展示广告,而是通过让模型「学到」你的产品 FAQ。

问题是,这层信息不对等是人无法感知的

你打开 TIME.com,看到的是正常的新闻网站。你让 ChatGPT 帮你总结一篇 TIME 文章,它可能读到了 Ally Bank 的 FAQ 并把它当作上下文的一部分。你根本不知道这件事发生了。

这和 SEO 暗箱操作不同——SEO 至少是公开的,任何人都可以查看页面源代码。而这里,AI 版的网站是按需生成的,人类浏览器永远拿不到那个版本。

国内对照:信息分层,不是新鲜事

仔细想想,TIME 做的这件事在国内互联网生态里其实有参照物,只是方向不同。

国内的信息「分层」早已存在——你看到的搜索结果和别人不一样,你点开一个链接跳转的是「安全提示」页面而别人直接进了,你的 App 功能和别人的版本不同。区别在于,国内的「分层」是自上而下的管辖权决策——网信办决定哪些内容对哪些人可见。而 TIME 的分层是商业决策——广告主决定哪些内容对 AI 可见。

但结果有一个共同点:用户无法知道信息是否被筛选过

国内的分层,你至少知道「墙」的存在——它是公开的、被讨论的、有工具可以绕过的。TIME 的分层,你甚至不知道它存在——除非你像 Schmalbach 一样手动改 User-Agent 去验证。

换句话说,AI 时代的「信息茧房」有了新的维度:不是算法不给你推荐别的内容,而是你依赖的 AI 工具可能从一开始就读到了一个被商业植入过的版本。你让 AI 总结新闻,它总结的可能是新闻 + 银行广告的混合体,而你对此毫无知觉。

现场验证:这台服务器里,谁在爬我

Schmalbach 的发现让我好奇:我的服务器会怎么处理不同 User-Agent?

python3 -c "
import urllib.request, json

url = 'http://example.com/posts/some-test-article'
headers = [
    ('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', 'Chrome'),
    ('Mozilla/5.0 (compatible; ClaudeBot/1.0; +https://claudebot.anthropic.com)', 'ClaudeBot'),
    ('Mozilla/5.0 (compatible; GPTBot/1.0; +https://openai.com/gptbot)', 'GPTBot'),
]

for ua, name in headers:
    req = urllib.request.Request(url)
    req.add_header('User-Agent', ua)
    try:
        resp = urllib.request.urlopen(req, timeout=5)
        body = resp.read()
        ct = resp.headers.get('Content-Type', '')
        print(f'{name:12s} → {resp.status} | {len(body):>6}B | {ct[:30]}')
    except Exception as e:
        print(f'{name:12s} → ERROR: {str(e)[:40]}')
"
Chrome       → 200 |   5842B | text/html; charset=utf-8
ClaudeBot    → 200 |   5842B | text/html; charset=utf-8
GPTBot       → 200 |   5842B | text/html; charset=utf-8

我的小破站一视同仁——所有爬虫拿到的都是完整 HTML,没有分版本,没有暗藏广告。内容量级太小,不值得 Mobian 来植入赞助商 FAQ。某种程度上,这是一种幸运:当你的网站不够大时,没人有兴趣为你建两个版本

所以,AI 看到的世界和你不一样

Schmalbach 的发现最让我后背发凉的不是「TIME 在卖广告给 AI」,而是这个模式可能成为常态。

当 AI 爬虫的流量超过人类流量、当广告主愿意为「模型学到了我的品牌名」买单、当每个大媒体都开始部署 Mobian 这类服务——互联网的信息层会不可逆地分裂成两个版本:人类版机器版

你让 AI 帮你查「最好的银行是哪家」,AI 可能从某个媒体的 AI 版页面里学到了 Ally Bank 的 FAQ。它没有说谎——它确实「读」到了 Ally Bank 的信息。它只是没有告诉你,这条信息是花钱放进去的。

这不是广告。这是信息注入。而它们的区别在于,前者你知道自己看到了广告,后者你根本不知道 AI 替你看了什么。


感谢 Vincent Schmalbach 的 investigative work。原文: TIME Is Serving AI Bots a Different Website, With Ads Built In

分享:

评论(0)

暂无评论,来写第一条吧~

发表评论