超越机器人与人类的在线安全新思路

Cloudflare AI··作者 Thibault Meunier

关键信息

文章指出,既有不受欢迎的人类(如欺诈者),也有受欢迎的机器人(如爬虫),因此仅检测自动化行为是不够的;系统现在必须评估地理来源、流量模式和预期行为等上下文信息。

资讯摘要

Cloudflare的文章挑战了长期以来认为区分机器人和人类足以保障网络安全部署的假设。它解释了现代用户使用多种工具(如AI助手、屏幕阅读器)与网页交互,使得传统基于浏览器的信号变得不可靠。真正的问题不在于请求背后是谁或什么,而在于行为是否符合预期用途:这是攻击流量吗?

爬虫是否造成了不成比例的负载?广告是否被操纵?文章呼吁从二元分类转向行为分析和意图识别,尤其是在零信任代理和设备智能越来越普遍用于保护数字资源的背景下。

超越机器人与人类的在线安全新思路

资讯正文

人类与在线世界互动需要一个入口:键盘、屏幕、浏览器或设备。所谓的‘人类检测’,其实是指人类在使用这些设备时所表现出的行为模式。近年来,这些模式发生了变化:一位初创公司CEO现在用浏览器来总结新闻;一位科技爱好者会自动化操作,在深夜售票时抢购演唱会门票;一位视力障碍者则启用屏幕阅读器的无障碍功能;而企业则通过零信任代理来管理员工流量。

与此同时,网站所有者仍在努力保护数据、管理资源、控制内容分发并防止滥用。这些问题并非仅靠判断客户端是人还是机器人就能解决——因为既有受歡迎的机器人,也有不受欢迎的人类。真正关键的是理解意图和行为。识别自动化的能力依然至关重要。然而,随着参与者之间的界限变得模糊,我们当前构建的系统应当适应这样一个未来:‘机器人 vs. 人类’不再是核心关注点。

真正重要的不是抽象意义上的‘人性’,而是诸如:这是攻击流量吗?那个爬虫的负载是否与返回的流量成比例?我是否预期这个用户会从一个新的国家连接?我的广告是否被恶意利用?

当我们谈论‘机器人’时,实际上涉及两个故事。第一个问题是:网站所有者是否应该允许已知的爬虫通过,即使它们并未带来流量?我们曾通过HTTP消息签名的方式对爬虫进行身份验证,让它们能在不被冒充的前提下识别自身。第二个问题是:新型客户端正在出现,它们不再像传统浏览器那样嵌入相同的行为特征,这对私有速率限制等系统具有重要意义。

本文将探讨当今网页防护的工作原理,以及当机器人与人类的界限逐渐模糊时,它必须如何演变。

网页浏览器厂商及其围绕的标准化生态系统一直非常谨慎地平衡这些利益,有时甚至引发巨大争议。例如,你可以使用浏览器扩展程序来屏蔽广告,但随着时间推移,浏览器已经限制了这类扩展程序的功能。无障碍标准(如WCAG)为非像素层面的网页内容使用铺平了道路,并在许多地方得到了法规要求的支持。你或许可以质疑每项权衡的具体细节,但它们是作为一个整体存在的:如果你想接入网络,就必须接受这套规则,无论你是内容发布者还是普通用户。

然而,这种平衡正在发生变化。让助手总结新闻或聚合研究并非新概念,但人工智能使这一能力对每个人变得触手可及。问题出在这些新兴客户端的工作方式上。一个真人助理可能会打印文章或截屏,而出版商并不知情,但他们仍会先通过标准网页浏览器渲染网站。AI代理则跳过了这一步,破坏了浏览器建立起来的出版商与用户权利之间的平衡机制。它们悄悄获取原始数据而不渲染页面。对出版商而言,由于这些客户端与现有浏览器流量高度重叠,因此本质上是不透明的。网站所有者无法判断自己被提取的内容是用于一份私人报告(可能扭曲、未署名),还是被用来训练服务百万用户的模型,从而扰乱了维持网站运行的可预测且具有变现潜力的访问流量。

维系互联网运作的隐性协议正在瓦解。要理解这一点,下一部分将介绍互联网上一种常见的架构。

客户端-服务器模型

让我们退一步,看看互联网上的主要部署模式之一:客户端-服务器模型。客户端向服务器发出请求以获取资源:

图1:客户端-服务器模型。客户端发送请求,服务器作出响应。

为了处理更多请求,网站可以提升服务能力,比如部署更多服务器,或者在静态流量前放置缓存。同样,如果一个客户端发出更多请求,或者客户端数量增加,来自客户端的请求数量也会增长。

图2:多个客户端向不同的服务器发送多个请求,其中一个由CDN前置。

这种简单性正是万维网成功的原因之一。它允许各种类型的客户端存在,并且网络可以持续演进,而无需每个服务器都确切了解另一端运行的是什么软件。

图3:两种不同客户端环境向服务器发送请求。每个服务器只看到请求本身,而看不到背后的终端用户。

这种开放性也带来了不确定性。网站能看到针对某个资源的有效请求,却通常无法知道响应离开服务器后会发生什么:内容是被一个人用键盘、鼠标和屏幕控制浏览器来浏览,还是被一个独立程序自动发起请求、归档响应、索引并输入到更大的系统中。

如今的机器人管理

这个模型效果出人意料地好。这也是为什么运营一个网站可以简单到只需启动一台连接互联网的服务器即可。但这种状态仅在服务器需要决定哪些请求可以处理、信任或优先时才成立。

有时候这关乎容量问题。如果你的服务被配置为每秒全球处理100个请求,但实际收到200个,你就必须丢弃部分请求。如果服务器只有1个CPU,而进入的请求需要2个CPU资源,你也得丢弃请求。如果服务200个请求的成本过高,那么你只能对所有请求进行限速。

你可以随机丢弃请求。虽然这样做可能不公平,也可能误伤正常用户,但它确实可行。如果没有其他可用信号,这是唯一选择。

容量只是问题的一部分。服务器还需要区分不同客户端,原因有很多:将攻击流量与普通流量区分开来,管理非恶意负载,防止数据被提取,减少广告欺诈,阻止虚假账号创建,或阻止自动化操作代替用户执行任务。

难点在于,网页客户端默认是未经身份验证的,同时又暴露了许多部分信号。因此,大多数服务器会选择基于接收到的信息应用访问控制逻辑。如果某个IP地址发出的请求数量是其他用户的10倍,它可能会被封禁。更进一步的做法是,服务器可能推断该IP地址属于某个VPN,因此代表多个用户转发流量。此时服务可以设定一个系数:假设每个用户每秒最多发送10个请求,那么共享IP地址的用户则允许发送100个请求,直到他们的请求开始被丢弃为止。

这就是机器人管理的关键之一:它旨在向服务器提供关于客户端的更多信息,帮助其做出决策。这些信息本质上并不精确,因为客户端不在服务器的控制之下。此外,同样的信息还会生成指纹特征,可被服务器用于不同目的,比如个性化广告投放。这就把一种缓解手段变成了追踪工具。

从宏观角度看,服务器会从客户端获取以下几类信号:

被动客户端信号:这是上网请求所必需的。客户端必然发送你的IP地址,并通常建立TLS会话。

主动客户端信号:由客户端自愿提供,通常对终端用户不可见。例如User-Agent头部或认证凭证。

服务器信号:服务器观察到的信息,比如处理请求的边缘服务器地理位置,或者请求到达时的本地时间。

为了限制和控制滥用行为,对网站而言重要的是客户端发起多次请求的能力和意图。对于一个由广告支持的网站来说,网站需要确信广告确实展示给了最终用户。为了保护品牌形象,网站可能希望确保客户端具备特定的渲染能力:PDF阅读器、SVG渲染器或虚拟键盘。如果请求来自拦截代理,网站可能希望确认请求确实来自终端用户。

如果流量增长,运营成本也随之上升。如果客户端无法产生价值——无论是经济上的还是其他形式的——服务器就没有动力承担这些成本。

不同的运营方对此环境有不同的应对方式。一些大型爬虫和平台会主动标识自己,因为可预测的访问值得付出被追踪的成本,甚至可能带来好处。另一些则试图避免被识别:因为他们预期会被封锁,或者寻求匿名性,又或者是在代表终端用户操作。结果就是一种建立在部分信号之上的不稳定平衡。

这就是为什么将人类与机器人对立起来的说法具有误导性。网站真正关心的不是抽象意义上的人类身份,而是客户端的行为是否符合网站能够支持的方式。

旁注:速率限制的三难困境

图4:速率限制三难困境。去中心化、匿名、可问责——任选其二

我们在互联网上治理访问权限时存在一个根本性的矛盾:去中心化、匿名、可问责——只能选择其中两项。

完全去中心化加匿名意味着缺乏问责制。被封禁的客户端可以轻松创建新账户而不影响其声誉。这意味着网站必须投入更多资源来管理自身资源。这正是当前网络的默认状态。

去中心化加可问责意味着每个人都知道你是谁,这对某些场景有效,但也有明显缺点。比如OAuth机制(如“用第三方账号登录”),要求注册账户并将活动信息透露给第三方。

匿名加可问责很可能需要治理规则和执行机制。目前尚无广泛部署的系统能同时实现这两个属性。最接近的例子是Web PKI体系,通过CA政策和证书透明度等治理机制使服务器可问责。一旦治理失效,就会产生后果。然而,客户端层面至今没有类似的机制。

当前的工具大多基于第一种情况中的元素,试图向第二种方向发展:TLS指纹、IP地址、robots.txt文件。它们尝试实现问责制,但仅在所生成的指纹保持稳定时才有效。

关键的区别在于“什么”,而不是“谁”

对于网站所有者而言,决定如何处理传入流量时,最重要的区分并不一定是机器人还是人类。而是在于平衡网站理解收到流量的需求与客户端保护隐私的需求。

一些流量来自已知的运营商,它们发出大量请求:搜索引擎爬虫、云平台和企业基础设施。这些实体通常对隐私的期望较低。它们是基础设施,从可识别的来源发出数百万次请求。能够识别请求来源有助于避免误判——比如当某个基础设施提供商向你发送过多请求或访问了不应访问的页面时。自我识别是我们提出的负责任AI机器人原则之一。基于这些原则,Cloudflare运行其雷达URL扫描器,也开放了爬取功能。

对于这类流量,身份验证是有效的。更准确地说,某些运营商可以容忍可追溯的请求,因为可靠访问值得这么做。使用HTTP消息签名的Web Bot Auth允许运营商对其请求进行密码学签名。例如OpenAI、Google、Cloudflare或AWS都会对其平台发出的请求进行签名。网站可以验证‘这个请求确实来自该平台的基础设施’,而无需依赖IP地址范围或User-Agent字符串。

人类和其他终端用户则合理地期望不被识别,同时保持匿名性,且不影响他们的访问体验和使用质量。

需要匿名性的分布式流量

图6:三台不同的浏览器向服务器发起请求。其中一台由人类操作,一台由设备上的助手操作,另一台则通过企业代理转发。

其他流量来自众多来源,每个来源发出的请求数量相对较少。这包括浏览网页的人类用户、进行测量研究的研究人员、使用住宅代理的爬虫程序,以及越来越多地代表人类行动的AI助手。

而且,人与机器人之间的区别正变得越来越无关紧要。代表人类预订音乐会门票的AI助手与手动操作的人类之间没有实质差异。两者都是分布式的,都需要匿名性。在每种情况下,网站所有者都希望为那些按预期使用服务的用户提供更少的摩擦,而不是滥用它。

身份验证或许可行。为了取代我们过去对IP地址的旧假设,它应该提供一套唯一且可验证的属性,与特定客户端绑定,并通过账户登录、电子邮件地址或硬件密钥证明。然而,这要求访问网站时必须展示身份,同时也损害了隐私。

我们希望构建现代解决方案,在不暴露身份的前提下证明行为。

面向网络的匿名凭证

自2019年以来,通过Cloudflare访问网站的客户端可以通过随请求一同发送的隐私令牌来提供此类行为证明。这是由于Cloudflare早期支持Privacy Pass。根据RFC 9576和RFC 9578标准化的Privacy Pass允许客户端携带一个由颁发方背书的行为证明,例如完成过某种挑战,但不会将这一结果转化为稳定的标识符。它定义的令牌与之前的访问、请求或会话无法关联,即不可追踪。

这很重要,因为它提供了一种不同于指纹识别的模型。与收集被动信号不同,服务器可以要求客户端提供一种主动的、保护隐私的信号。

这降低了会话建立时的摩擦。Privacy Pass 已经在 Cloudflare 的基础设施中扩展到每天数十亿个令牌,主要用于隐私中继服务。

图 7:来自 RFC 9576 第 3.1 节的 Privacy Pass 兑换与签发协议交互

该 RFC 强调了四个角色。签发者信任一个或多个认证者,在签发凭证(RFC 中为令牌)之前执行某些检查。客户端持有这些凭证,并决定在适当范围内何时展示它们。源站仍保留对信任哪些签发者的控制权,以及每次展示的具体含义。这并不会消除滥用或政策问题,而是为客户端和服务器提供了一种保护隐私的方式来处理这些问题。

该系统结构简单,但也存在局限性:例如,它不允许动态速率限制。如果客户端被授予 100 个令牌,并在首次或第二次会话后开始消耗过多资源,则无法撤销此前已签发但尚未使用的剩余令牌。

此外,由于不可关联性特性,新的签发者很难出现。源站无法向签发者提供关于其令牌所传达信号质量的反馈机制。

最后,签发者提供的令牌数量与这些令牌在兑换时可进行的不可关联展示数量之间存在一对一的关系:每个展示对应一个令牌。理想情况下,我们希望有一种系统,客户端只需联系签发者一次,之后就能基于特定源上下文多次展示。这指向用户代理持有经过验证的凭证,并基于它们生成证明,而不是反复获取一次性令牌。

我们的目标是帮助建立一个开放的私有速率限制生态系统。为此,我们正在协助开发和探索新的 Privacy Pass 原语,例如匿名速率限制凭证(ARC)和匿名信用令牌(ACT)。

以 ACT 为例,客户端可以证明“我与该服务有良好的历史记录”,而无需透露“我是这个用户”。ACT 在协议层面保持展示之间的不可关联性,这是此处的关键密码学属性。即使在 RFC 9576 第 4.3 节描述的联合签发者-源站部署模型中,协议设计也确保令牌签发与展示之间不直接关联。但这并不能完全消除通过其他层(如 IP 地址、Cookie、账户状态或时间戳)产生的关联。相同的特性可以通过 ACT 实现的反向流框架中使用标准化的 VOPRF 和 BlindRSA 原语来实现。

一个成功的生态系统需要是一个开放的签发者生态系统。实际上,这意味着不仅仅是说任何人都可以签发凭证,而是签发者需要能够决定信任哪些签发者,用户代理需要有一种一致的方式来呈现请求的内容。生态系统还需要让签发者建立声誉,并让依赖方停止信任低质量的签发者。不应由单一的看门人控制参与。

为了让这一切可行,必须存在一种跨浏览器和其他用户代理都能使用的协议和客户端API。它必须易于部署,对用户清晰明了,并且足够具体,以便浏览器能够限制滥用的证明请求,而不仅仅是将其展示出来。

如果我们什么都不做,会怎样?

网站所有者已经对新兴客户端带来的冲击做出反应。这部分是因为大规模的数据抓取和模型训练,也因为用户代理以网站未曾预料的方式运行。因此,网站要求获得更多的技术手段来阻止AI爬虫及相关工具。在一个机器人与人类界限日益模糊的生态系统中,我们目前采用的措施将单独变得越来越无效。

如果这些措施无效,我们可以预期网站将转向:要求用户注册账户才能查看任何内容,或者将访问权限绑定到一个稳定的标识符上。这意味着不再有广告支持的免登录文章,也不再有“每月三篇免费文章”。其他内容企业可能会完全离开网络,直接向AI供应商提供数据和服务并收取费用,或者在大型平台运营的封闭生态中提供服务。

这些结果是糟糕的。所有人都从网络提供的信息开放获取中受益。并不是所有网站都会做出这样的选择——在线提供内容的原因有很多,而且并非全部出于商业目的。但如果足够多的网站这样做,就会改变网络上的‘正常状态’,使其变得更糟。

这一点很重要,因为开放的网络是一种不同客户端可以从不同来源收集信息、而不依赖少数几个玩家的环境。我们也受益于信息来源的多样性。在一个信息访问主要通过少数几家公司中介的网络上,我们将过多权力集中在太少的人手中。结果不仅是匿名客户端面临更多摩擦,整个互联网也会变得更加脆弱,出版商与用户之间连接的方式更少。

匿名认证本身也带来一定风险

我们应该清楚自己正在构建什么。用于证明属性的基础设施可能变成要求属性的基础设施。匿名凭证的初衷是证明其持有者的某些特征,例如“我解决了某个挑战”或“我没有超过速率限制”。但一个能证明任意单个属性的系统,同样有能力证明其他属性,这是令人担忧的地方。

如今,出示一个隐私通行证(Privacy Pass)令牌可能意味着‘已解决验证码’。但明天,同样的系统或许能证明完全不同的属性。例如,仅向具备‘设备认证’的设备发放令牌,会排除旧设备及其用户;同样,要求用户拥有‘苹果或谷歌账户’也会排除非主流平台的使用者。

一旦建立起验证匿名证明的基础架构,可证明的内容将不断扩展。我们必须确保这不会成为互联网访问的门槛。

为什么我们仍应继续构建它

现有的壁垒已经存在。平台越来越依赖身份验证。网站正在拦截来自共享代理的流量。问题不是是否会出现这些壁垒,而是用户能否保有对自己隐私的控制权。

正如我们所讨论的,机器人管理需要某些信号被共享。而匿名证明的替代方案更糟。如果没有能力匿名证明某种属性,每一个屏障都会变成指纹识别:必须使用特定浏览器重试、绑定账户、不要使用VPN。但对一些人来说,这些选项根本不存在——比如那些甚至不知道自己连接是通过代理的人。

保护隐私的凭证并不会消除信任或政策需求,反而可以让这些要求更加明确且不那么普遍。与指纹不同,证明是显式的。用户可以清楚看到系统在请求什么,而像网页浏览器和AI助手这样的客户端也可以帮助执行同意机制。

评估新方法的判断标准

有一个简单的测试可用于衡量下一代服务于全球用户的互联网方法:这些方法是否允许任何人,无论身处世界哪个角落,都能自行开发设备、使用任意操作系统、安装自己的浏览器,并获得对网络的访问权限?如果这一特性无法维持,如果只有特定制造商提供的设备认证成为唯一可行的信号,我们就应该停止。

这意味着我们需要培育一个开放的签发者生态系统,其中没有单一的守门人决定谁可以参与。在速率限制的三难困境中,去中心化对于开放网络而言是必需的。我们尚未完全掌握如何实现这一点,但我们知道必须推动其发展。

一种新的平衡

到目前为止,网络整体上保持了某种平衡。有些方面可能是偶然之喜,有些则可能是必然趋势。对许多终端用户和内容发布者而言,这种平衡之所以有效,是因为网络足够开放,能够支持多种客户端访问多样化的资源。

这种平衡正面临风险。为网络设计的隐私保护原语是一种尝试,旨在打造一种更具隐私性、开放性和问责性的未来。它未必成功,但总比坐等更好。

如果你有兴趣追踪并参与这项工作,相关进展正在IETF和W3C的公开场合进行。我们认为,今天塑造网络的人们聚集的地方,也正是设计明日网络的最佳场所。

互联网属于终端用户,他们必须处于中心位置。

来源与参考

  1. 原始链接
  2. Moving past bots vs. humans

收录于 2026-04-22