每一个智能体演示,跑的都是被精心布置过的网页。我把自己的智能体放到了外面。
我们习惯用静态页面和本地语料库来评测智能体,因为真实网络对测量本身就不友好:墙会移动,验证会轮换,结果还取决于你当天那个IP的信誉。所以几乎没人公布数字。我想要这些数字,于是自己搭了一套测量装置——一个最朴素的智能体,不破解验证、不重试、不登录,打开200个真实网址,横跨五个类别(文档、新闻、电商、开发工具、社交),逐个尝试读取。
测量工具是我自己写的 navette,一个 659 KB 的浏览器。但这篇讲的不是工具,是网络本身。换任何无头引擎,数字的形状都一样。
这是一次测量,不是一次判决
一个出口IP(住宅),一天,零验证破解,零重试,零登录。一个把自己从这个探针面前围起来的站点,没有被审判——它只是被测量了一次,从一个视角。
汇总结果:165/200,也就是82.5%,能被一个朴素智能体端到端读完。听起来挺大方,直到你把它倒过来看:每六页里就有一页以上是关着的,而这关着的六分之一并不是随机分布。它恰好集中在智能体最能产生经济价值的地方——新闻、购物、社交。
整张表的一句话版本是:文档免费,其余一切都要谈判。
三层墙,一层比一层硬
第一层是声明式的墙,也就是 robots.txt。语料库追踪了十个AI爬虫(GPTBot、ClaudeBot、CCBot、PerplexityBot、Bytespider 等)。200个主机里有72个把它们全部屏蔽,另有4个部分屏蔽。被屏蔽最多的爬虫是:GPTBot(69个主机)、Google-Extended(67)、Bytespider(67)、ClaudeBot(66)、anthropic-ai(66)。robots 条款声明起来免费,忽略起来也免费——它是社会契约,不是围栏。测量结果显示,在内容制作成本高的地方,这份社会契约已经签满了。
第二层是强制执行的墙,也就是验证和 JS 门禁。Turnstile、"Just a moment"、DataDome、PerimeterX——语料库里出现12次验证,另有23个空页面或 JS 门禁页,不执行门禁就什么都渲染不出来。这才是真正的围栏。它也是智能体可以攻破、但多数情况下不该攻破的墙——攻破它是合规问题,不是工程问题。
第三层是正在赶来的收费站,x402 及其同类。这就是我把基准跑了两遍的原因。x402 协议族——HTTP 402 加上 X-Payment 头,按请求机器支付——正在从提案走向部署。我的探针盯着它:HTTP 402 状态码、支付头,以及发布方已经在用的付费墙标记(schema.org 里的 isAccessibleForFree:false,谷歌的付费墙标记,任何愿意看一眼的智能体都能读到)。
结果是:零。在164个给出响应的探针里,零个402,零个X-Payment头。诚实的限定条件是,200个被动探针里有36个本身就被边缘节点用403挡掉了,所以"不存在"是在能响应的那部分上测出来的。收费站已经签了合同,但还没装好。
一个站点同时跑着三层
但我能说出它的形状,因为语料库里有一个站点已经同时运行着全部三层:
The Intercept:标记里有 isAccessibleForFree: false(声明式付费墙),robots.txt 里屏蔽了所有被追踪的AI爬虫(GPTBot、ClaudeBot、CCBot、Google-Extended、PerplexityBot、Amazonbot)——而它的首页此刻仍然能被一个朴素智能体完整读取。
那是一个闸门抬起的计时停车场。这份数据集让你可以检验一个预测:第二层强制墙的存在,是为了在第三层收费站建好之前保护它。标记已经在告诉你,闸门会在哪里落下。
而且墙会移动——这正是带日期、可复现数据集的意义。在我10月6日和10月8日两次运行之间:又一家新闻发布方翻转为全屏蔽(34到35),整体可读率从84.5%降到82.5%。没人会注意到一家发布方改了一行 robots 条款。数据集会。
200个站点里有55个提供了 llms.txt。采用集中在文档和开发工具——也就是零墙的那几个类别。最需要机器协商通道的站点(新闻、社交)反而最不感兴趣:新闻类一共只有五家。llms.txt 是一条礼貌车道,而这条路正在忙着装收费站。
200行 × 5个类别:结果分类、墙的类型、每个爬虫的 robots.txt AI 条款立场、llms.txt 是否存在、x402/付费墙信号、耗时。CC BY 4.0,提交在仓库里(bench/tollbooth-results.{json,csv} + bench/DATASET.md 说明 schema),一条命令即可对任何 navette 守护进程复现:
NAVETTE_PORT=8766 python3 bench/tollbooth.py
一个公开的请求:如果你每天让智能体跑真实站点——我说的是爬虫和抽取方向的朋友(pulpie-mcp 及邻居们)——把你的失败案例发给我。下一次跑这个基准时,应该把你那些撞墙的网址也包含进去。这样它才会成为参考数据集,而不是我的周末一跑。
给好奇者的工具说明:navette——一个单一的 Rust 二进制文件,驱动你的操作系统自带的 WebView(WebKit/WebView2/WebKitGTK),659 KB,MCP 原生,MIT。基准测试脚本是同一仓库里的 bench/tollbooth.py;它驱动的守护进程,就是我的智能体用来读取这个网络的那一个。
热门跟贴