Skip to content

Cap 是如何工作的?

顺带一提,本页介绍 Cap 的 SHA-256 与 instrumentation(浏览器环境检测)质询的工作原理,内容偏技术细节,不涉及 RSW 时间锁。更宏观的概览见有效性页面。


  1. Cap 初始化时,会自动在浏览器中为验证组件注册一个自定义元素
  2. 验证组件创建一个 shadow DOM,并把所有必要的元素追加进去

请求质询

  1. 当需要求解时,验证组件向服务端发送请求。服务端会返回一个令牌、待求解质询的配置,以及可选的压缩过的 instrumentation 数据。

  2. 随后验证组件使用固定的种子(即质询令牌)和服务端提供的配置生成多个质询。如果提供了 instrumentation 数据,则会解压并在沙箱化的 iframe 中执行求解。

计算解

  1. 验证组件使用 Rust 编写的 WASM 和 Web Worker 并行求解质询:

    • 每个 worker 通过重复以下步骤来寻找有效的 nonce:
      • 将盐与不同的 nonce 值组合
      • 计算该组合的 SHA-256 哈希
      • 检查所得哈希是否以目标前缀开头
    • WASM 不断递增 nonce,直到找到匹配的哈希
  2. 如果存在 instrumentation 质询,则将其解压并执行。

用解兑换令牌

  1. 找到有效解后,验证组件把结果发回服务端进行校验。
  2. 服务端也用同样的令牌和配置生成相同的质询,并核验验证组件提交的解。
  3. 校验成功后,服务端兑换该解并签发一个令牌,用于为请求鉴权。