两个类别已经不够用了
多年来,流量通常被分成两类: 人类和机器人。人类获得产品服务。机器人则被阻止、限速或忽略。
这种划分现在已经不成立了。有些自动化访客是代表真实客户行动的代理: 例如,比较方案的助手、通过你的 API 拉取数据的代理,或者调用你的 MCP server 来完成任务的工具。AI 提供商现在也在自己文档中说明了这种由用户发起的访问: OpenAI 说明,当用户向 ChatGPT 提问时,其 ChatGPT-User agent 会访问页面 (OpenAI crawler documentation),Anthropic 也为同样目的列出了 Claude-User (Anthropic crawler documentation)。与此同时,有些人会与 AI 密切协作,在助手支持下起草消息、填写表单并浏览产品。把这些情况都硬塞进人类或机器人二分法,会在两个方向上都造成错误决策。合法代理会被拦下,真实用户也会因为行为看起来异常而被质疑。
要以能导向良好决策的方式区分人类和 AI 代理流量,你需要更多类别,也需要知道每个结果的可信度有多高。关于 如何判断网站流量是否来自 AI 代理 的文章会逐步说明让这件事成为可能的信号,而 SaaS apps use case 则展示了这种区分会在何处改变产品决策。
四个类别,各自含义明确
Proof of Actor 会将交互归入四个类别。每一类都有定义和明确边界,因此团队中的任何人都不会把结果理解得超过证据所支持的程度。关于这套分类法背后的推理,请阅读 Human, AI-assisted or agent: a taxonomy for app traffic。
Human
受支持的可观察信号表明这是以人为主导的交互。这个类别关注的是谁在主导交互,而不是身份本身。Human 结果不会验证这个人是谁,也不会声称在任何地方都没有使用 AI。
Human + AI
AI 协助已被声明,或者通过一个能够实际观察到它的受支持集成被发现。例子包括: 用户通过你自己的披露控件将内容标记为由 AI 起草,或者你的应用报告其内置助手为已登录用户执行了某项操作。更多内容请参阅 AI-assisted interaction 词条。
Agent
自动化或由代理发起的交互,并且由可验证身份提供支持,例如来自已发布密钥的有效请求签名,或者来自经过谨慎限定的推断。Agent 结果描述的是谁在执行。它并不意味着该代理已获授权、安全,或者拥有来自某个人的有效委托。更多内容请参阅 autonomous agents。
Unknown
现有证据不足以作出可靠判断。Unknown 是一个诚实且有用的结果: 它显示出你的覆盖范围到哪里为止,也让你的策略能够有意识地处理不确定情况,而不是误打误撞地处理。
每个类别都带有依据
把人类流量和代理流量分开,只完成了一半。另一半是知道每个结论有多强。这就是为什么每个 Proof of Actor 结果都带有一个依据:
- Verified: 已经通过检查验证的陈述,例如用已发布密钥校验的请求签名。
- Declared: 客户端或你的应用已经声明,例如代理自报身份,或用户披露自己在使用 AI 协助。
- Inferred: 从行为或上下文信号得出的结论,始终标记为推断。
- Unknown: 证据不足,无法判断。
类别与依据的组合,才是你构建精确规则的基础。一个 verified 的代理和一个 inferred 的代理都属于代理,但你可能会希望前者获得结构化 API,而对后者只施加标准速率限制。一个声明了 AI 辅助的提交和一个人类会话都可以正常继续,只是前者会带上有助于支持团队处理的标签。完整分类法可以在 Detection & Limitations 中查看。
分类是如何发生的
Proof of Actor 对每次交互都遵循同样的证据优先路径。完整说明见 How It Works。
你的集成能够看到的信号
- Request signatures 来自发布密钥的自动化客户端,使用 RFC 9421 中定义的 HTTP Message Signatures。IETF 的 Web Bot Auth working group 负责标准化自动化客户端如何通过这种方式进行身份验证。
- Declarations 来自自我标识的客户端,例如 AI 爬虫和抓取器文档中定义的 user agents,以及来自你自己的应用在知道涉及 AI 协助时所作的声明。
- Request context 由服务端集成可获取,例如 headers 和协议细节。
- Interaction signals 来自在其运行页面上经批准的浏览器集成。
从信号到结果
信号会被检查、按依据标注并组合。强的已验证证据会产生高置信度结果。弱的或相互冲突的证据会产生限定性的推断或 Unknown。超时或缺失的信号永远不会变成 Human 结果。输出包括类别、依据以及任何团队成员都能阅读的证据摘要。
一旦流量分离出来,你可以做什么
Proof of Actor 围绕三项能力组织: Detect、Understand 和 Route。
Detect 每次交互背后的 actor
收集每种上下文中可用的信号,将已验证的陈述与推断分开。让 Unknown 保持可见。
Understand 每种 actor 如何使用你的产品
按 route 和时间查看人类、AI 辅助、代理和未知活动的构成。打开任一结果,查看哪些是已知的,哪些是未知的。找出代理集中的 routes,以及 AI 辅助常见的 workflows。
Route 将每个 actor 导向合适的体验
一旦证据支持,就应用你自己的策略。在公开网站上,websites use case 展示了这些选择如何映射到真实 routes:
- 为已验证的代理提供结构化响应或 API,而不是人类风格的页面。
- 为以人为主导的会话保留标准体验。
- 为 AI 辅助提交添加标签,让正确的团队来处理。
- 当你的条件要求时,在敏感操作上要求更强的凭证。
- 为每个 route 选择一个明确的 Unknown 兜底方案,例如允许公开页面,同时对账户变更保留现有检查。
关于如何按 route 逐步从观察过渡到执行,rolling out actor-aware policies safely 这份指南有更详细的说明。
为什么这对你的用户很重要
把这件事做对,对所有使用你应用的人都有好处。
人们会获得更顺畅的体验,因为他们不会因为一个模糊的评分而被质疑。与 AI 协作的人会在适合的工作流中获得对已披露协助的支持。合法代理会得到可靠、结构化的执行方式,从而减少对你界面的抓取和负载。你的团队会得到可解释的决策,因此支持沟通、事件复盘和策略调整都建立在证据之上,而不是凭空猜测。
登录态不等于 actor
最常见的混淆来源之一是账户本身。已登录会话只能告诉你当前使用的是哪个账户,并不能告诉你是谁在主导当前交互。同一个账户可以在早上由所有者点击设置使用,中午由所有者要求助手导出报告使用,晚上又由通过 API key 操作的代理使用。
把这三者一视同仁会在两个方向上都造成问题。如果默认账户上的每个请求都来自所有者,代理就可能进入原本为人类设计的工作流。如果默认任何异常请求都是攻击,所有者自己的工具就会被拦下。把 actor 和账户分开,可以让你的应用保持原有的身份验证和授权不变,同时补上当前是谁在操作的缺失上下文。正是这种上下文,使你能够在不把仅限人类的工作流暴露给代理的情况下,为代理提供结构化访问。
从观察模式开始
每次部署都从观察模式开始。Proof of Actor 会在你的应用仍按原样响应时记录结果。你的团队建立人类、AI 辅助、代理和未知活动的基线,将其与已知结果进行对比,并在任何规则改变之前审查误报。一旦某条策略准备就绪,你就可以先在一个 workflow 上启用它,再逐步扩大范围。
加入创始开发者计划
Proof of Actor 目前处于私有 beta,面向一小部分应用团队开放。入选的创始开发者可以在约定使用范围内获得最长 12 个月的免费访问,并以实际反馈作为交换。你将获得我们工程师的直接集成支持、功能的优先体验,以及对优先级的影响力。
如果你需要在自己的应用中区分人类和 AI 代理流量, 申请早期访问,并告诉我们你最想理解的是哪种交互。
探索 Proof of Actor,阅读 how it works,或者准确了解 what the evidence can establish。
来源
- RFC 9421: HTTP Message Signatures, IETF, February 2024.
- Web Bot Auth (webbotauth) working group charter, IETF.
- Overview of OpenAI crawlers, OpenAI.
- Does Anthropic crawl data from the web, and how can site owners block the crawler?, Anthropic.