Brave 浏览器的 Farbling(模糊化/加噪技术) 是目前防御浏览器指纹(包括音频指纹、Canvas 指纹、WebGL 等)最顶尖的技术方案方案之一。
它的核心设计理念是:不采取“一刀切”的封锁 API 策略(防止网页功能崩溃),而是向 API 返回的数据中注入微小、受控且伪随机的“数学噪声”。这样既破坏了追踪脚本的计算一致性,又让人耳或常规应用完全感知不到差异。
一、 传统防御方案的困局
在 Farbling 出现之前,隐私保护主要有两种思路,但都有致命缺陷:
- 直接屏蔽 API(Block/Disable):直接禁用
Web Audio API。- 后果:会导致所有在线网页音乐播放器、音频剪辑工具、Web 游戏甚至简单的网页音效完全瘫痪。
- 完全标准化/全网统一(Standardization,如 Tor 浏览器):强制所有用户返回完全相同的音频数据。
- 后果:虽然无法追踪单个用户,但用户会变成一个极显眼的“防追踪异类”。此外,完全抹平底层硬件差异在复杂多变的现代 Web Audio 管线中极难完美做到。
二、 Farbling 防御音频指纹的核心运作机制
Brave 的 Farbling 机制针对 Web Audio API 的工作流,做了非常精妙的技术设计:
[Web Audio 算法 / 浮点计算]
│
▼
┌─────────────────────────────────────────┐
│ Brave 浏览器 Farbling 引擎 │
│ 1. 提取 Seed: Hash( Domain + Session ) │
│ 2. 计算微小微调因子 (Fudge Factor) │
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 将伪随机微小扰动注入 AudioBuffer │
│ (例如音频采样值 * 1.000000123) │
└─────────────────────────────────────────┘
│
▼
[返回给前端 JavaScript 脚本 (如 collina.js)]
➔ 脚本计算得到的 Audio Hash 被成功“毒化”(Poisoned)
1. 确定性随机化种子(Deterministic Per-Domain / Per-Session Seed)
如果只是给每次 API 调用都加纯粹的随机数,虽然能阻止追踪,但也可能导致部分需要频繁读取 Audio Buffer 的合法 Web 应用出现逻辑错误。
因此,Brave 采用了伪随机(Pseudo-random)策略:
- Brave 会根据 当前的网页主域名(eTLD+1) + 当前会话 ID(Session ID) 生成一个特定的随机种子(Seed)。
- 同一网站在同一会话内:音频 API 返回的数据微调是完全一致的。网页重复读取,拿到的是同一个稳定但带有轻微偏差的数据,确保了网页内部音频逻辑的稳定性。
- 跨网站(Cross-Site):
siteA.com和siteB.com获取到的“音频指纹”截然不同(因为域名 Seed 不同),跨站追踪脚本(如 AliExpress 关联的阿里数据服务)无法将两边的设备关联起来。 - 跨会话(Cross-Session):关闭并重新打开浏览器后,Seed 改变,上个星期在
AliExpress留下的音频 Hash 直接失效。
2. 微小乘法扰动(Fudge Factor Injection)
对于音频采样数组(AudioBuffer),Brave 会在 API 最终输出数据给 JavaScript 前,将其浮点数采样值乘以一个微小的微调因子(Fudge Factor)。
- 对于计算机与哈希算法:原本浮点数运算结果中的
0.00000001改变成了0.0000000123,经过 SHA/MD5 运算后,最终生成的音频指纹 Hash 会变得完全不同(即所谓的“毒化指纹”)。 - 对于人耳与音频播放:这种百万分之一级别的数值振幅变动,频率极其微弱,在数字信号转换成声音时完全处于人耳的听觉掩蔽阈值(Auditory Masking)之下,根本听不出任何杂音或失真。
3. 针对隐蔽后台 API 调用的限制
除了 Farbling 注入数据扰动外,针对类似于 AliExpress 这类“在后台无声开启 AudioContext 占用音频通道”的行为:
- Brave 强化了标签页生命周期与 API 权限管理,针对非激活(Background Tab)状态下的网页限制其
AudioContext运行。 - 防止其占用系统音频硬件驱动(例如导致蓝牙耳机误以为网页有音频输出而锁定连接)。
三、 Farbling 技术对比总结
| 特性 | 传统 Chrome / Edge | 禁用 Audio API / 插件拦截 | Brave 的 Farbling 模式 |
| 设备真实特征 | 100% 暴露出硬件计算差异 | 被屏蔽/无数据 | 被修改为伪随机微调数据 |
| 网页音频功能 | 正常 | 崩溃或无声 | 完全正常(人耳无感知) |
| 同网站同会话稳定性 | 稳定(可追踪) | 无法运行 | 稳定(保证 Web 应用逻辑无故障) |
| 跨网站追踪能力 | 极高(同一个指纹跨站碰撞) | 无法追踪(但会被标记为风险设备) | 完全失效(每个网站拿到不同指纹) |
| 跨会话(重新开机) | 持续被追踪(硬件不变指纹不变) | 无法追踪 | 指纹发生变化,无法长期追踪 |
通过 “微小数学扰动 + 域名/会话级伪随机隔离”,Brave 成功将 Web API 的“追踪工具属性”剥离,仅保留其“功能性属性”,实现了防追踪与网页兼容性的平衡。

