Safari 在无痕浏览中加噪声,Safari 26.0 起限制已知指纹脚本。WebKit 官方说了限制什么,又没限制什么。
“Safari 能防指纹追踪吗?”答案要分两层说。Safari 不会像 Tor Browser 那样让所有用户看起来一模一样,也不会默认给每个网站的 API 调用加噪声。按 WebKit 自己的发布说明,它有两层:Safari 17 起在无痕浏览中增加的保护,以及 Safari 26.0 起对被归类为“已知指纹脚本”的脚本施加的限制。
要点速览
- 据 WebKit 的 Safari 17.0 说明,Safari 17.0 在无痕浏览中加入了“对可用于指纹识别的 Web API 加噪声”,并拦截已知追踪器与指纹脚本。
- 据 WebKit 的 Safari 26.0 说明,Safari 26.0 让已知指纹脚本无法可靠读取屏幕尺寸、硬件并发数、SpeechSynthesis 语音列表、Apple Pay 支付能力、Web Audio 回读、2D Canvas 等 API。
- 这些脚本还不能写入长期存储,也不能读取查询参数和
document.referrer。 - 保护取决于脚本是否被识别为已知指纹脚本,未被收录的脚本并未被描述为受限。
- IP 地址、TLS 握手等服务端信号,以及浏览器引擎本身的身份,不在这些说明的范围内。
两层保护,而不是一个开关
反指纹思路通常有两种。统一化让大量用户返回相同的值,Firefox 和 Tor 的 resistFingerprinting 就是如此。加噪声则扰动输出,让追踪者拿不到稳定值,详见我们的 Canvas 噪声文章;DuckDuckGo 浏览器两者混用。
WebKit 文章里描述的做法又不同:针对已知会做指纹识别的脚本,普通脚本不受影响。好处是网站兼容性好,代价是依赖分类。
第一层:无痕浏览(Safari 17)
WebKit 的 Safari 17.0 文章列出了无痕浏览的改动,与指纹相关的有两项:拦截已知追踪器与指纹脚本,以及给可指纹化的 Web API 加噪声。此外还有拦截链接中已知的追踪参数、缓解把子域名映射到第三方 IP 的追踪器、拦截 CNAME 伪装的追踪器。
该文没有说明噪声如何生成、作用于哪些 API,所以我们不做具体断言;它也没有说这些保护适用于普通(非无痕)窗口。除非你读到的 WebKit 页面另有说明,请把它们当作无痕浏览功能。
第二层:已知指纹脚本(Safari 26.0)
Safari 26.0 说明描述的改动只针对 Safari 识别出的指纹脚本:
| 受限项 | 相关深度文章 |
|---|---|
| 屏幕尺寸 | 屏幕分辨率指纹 |
| 硬件并发数 | 硬件并发数与设备内存 |
| SpeechSynthesis 语音列表 | 语音合成指纹 |
| Web Audio 回读 | 音频指纹 |
| 2D Canvas | Canvas 指纹检测 |
| Apple Pay 支付能力,以及原文所说的“更多” | — |
WebKit 的措辞是这些脚本被阻止“可靠地访问”这些 API。文章没有说明具体是加噪声、固定值还是返回空,我们不去猜测。除读取 API 外还有两项限制:已知指纹脚本不能设置 Cookie 或 LocalStorage 这类长期的脚本写入存储,也不能读取用于导航追踪的状态,即查询参数和 document.referrer。
Safari 的做法没覆盖什么
- 未被收录的脚本:规则依赖分类,Safari 没有归类的脚本并未被描述为受限,从未被标记过的网站自有第一方代码就是典型例子。
- 网络层信号:无论用什么浏览器,服务器都能看到你的 IP 和 TLS 握手,见 TLS 指纹详解。
- 引擎身份:网站仍能判断对面是 WebKit,在 iPhone 上所有浏览器都是如此。我们不假定 iOS 上的 Chrome 或 Firefox 会继承 Safari 的隐私设置,文中引用的 WebKit 文章也没这么说。
- 基于状态的追踪是另一层:智能防跟踪(ITP)处理 Cookie、存储和 Referrer,不处理计算出来的指纹。
稳定性同样值得关注:指纹只有在保持不变时才对追踪者有用,而现实中的指纹本身就会随浏览器更新、设置变化而漂移,详见指纹如何随时间衰减。
自己测一测
先在 Safari 普通窗口打开我们的指纹检测,再在无痕窗口打开,对比哪些值能读到、刷新后是否变化。BrowserInsight 是第一方页面,所有采集都在你的浏览器本地完成,因此“已知指纹脚本”规则预计不会作用于它。本工具展示页面能读到什么,不会告诉你 Safari 的保护是否生效,结论需要你自己判断。技术背景请读浏览器指纹技术完全指南。
常见问题
Safari 能完全阻止指纹识别吗?
不能。WebKit 描述的是对已知指纹脚本的限制和无痕浏览中的额外保护,不是全面保证。
普通浏览时这些保护开着吗?
Safari 26.0 说明描述的已知脚本限制没有限定在无痕浏览;Safari 17.0 的新增项则明确列在无痕浏览之下。
Safari 会让我的指纹和别人一样吗?
文中引用的 WebKit 文章都没这么说。其表述的目标是阻止已知脚本可靠读取设备特征。


