什么是机器人检测
机器人检测是一组用于区分自动化流量与人工流量的技术。它在 Web 安全中有很长的历史: 阻止凭证填充、抓取、虚假注册、库存囤积和垃圾信息,这些都出现在 OWASP Automated Threats to Web Applications 分类法中。典型输入包括 IP 信誉、请求速率、请求头和协议指纹、浏览器环境检查以及交互信号。典型输出是一个分数或一个判断,通常会直接接入阻止、挑战或允许。
为什么会以这种方式构建
传统机器人检测建立在一个假设之上: 自动化流量大多具有对抗性,工作的目标是把它挡在外面。这个假设让单一的机器人分数在边缘层被强制执行,成为一种合理的设计。如果一个请求看起来是自动化的,就用 CAPTCHA 挑战它,或者直接阻止它。
为什么这种模型已经不够了
如今,应用接收到的 actor 类型要丰富得多:
- 正常浏览的人,
- 借助 AI 助手工作的人,由助手代其阅读、起草或填写,
- 明确表明身份的合法 agent 和爬虫,有时会使用 signed requests,
- 为用户完成任务的自主 agent,
- 证据无法确定其性质的未知客户端。
二元的机器人分数并不能很好地描述这些情况。我们的文章 Human, AI-assisted or agent: a practical taxonomy for application traffic 提出了另一种思路。阻止每一条自动化请求会拒绝合法参与者; 全部放行又会失去有用的控制。而基于薄弱证据给出过于自信的判断,会产生误报,最终影响到真实用户。
actor intelligence 有何不同
Actor intelligence 问的是一个更宽泛的问题: 这里出现的是什么类型的 actor,证据实际上说明了什么? 它与传统机器人检测有三点不同:
- 更丰富的类别。 Human, Human + AI, Agent 和 Unknown,而不是人和机器人二分。
- 明确的依据。 每个结果都会说明它是基于 Verified, Declared 还是 Inferred 证据,或者没有依据,这样加密校验就不会与行为推断混淆。
- 分离的决策。 结果用于指导你应用的策略,而不是默认替你强制执行。团队先观察,再按 route 决定。
这两种方法可以并存。主要爬虫运营方已经支持除 user-agent 字符串之外的检查,例如 Google 的 crawler verification by reverse DNS and IP range,而 signed requests 将这一思路扩展到任何运营方。若要了解今天可用的信号,请参阅 如何判断网站流量是否来自 AI agent。边缘层的滥用控制仍然有价值; actor intelligence 则为应用本身提供上下文,以便为每一种交互设计合适的体验。
常见误解
- "agent 只是机器人。" 有些是滥用者; 许多是代表他人使用你产品的合法用户。
- "机器人分数就是事实。" 它是带有错误率的推断。应把它当作带置信度的证据,而不是最终判断。
- "Unknown 就是阻止。" Unknown 表示证据不足。接下来应该是一个明确的、按 route 设定的选择(见 fail open vs fail closed)。
Proof of Actor 如何适配
Proof of Actor 是面向 app、网站、API 和 MCP server 的 actor intelligence。Detect 收集信号并将 Verified 断言与推断分开; Understand 展示交互类型、趋势和证据; Route 让你自己的策略决定是否允许、适配、挑战、复核或限制特定交互。默认不会阻止任何内容。
来源
- OWASP Automated Threats to Web Applications: 凭证填充、抓取和账号创建等自动化威胁的分类法
- Google: Verifying Google's crawlers and fetchers: 由运营方发布的爬虫验证