返回博客

Canvas、WebGL、Audio 指纹:看不见的硬件签名

2026-06-17

在浏览器指纹里,有三类特别"硬核"的特征,因为它们直接反映你的硬件与驱动:Canvas、WebGL 和 Audio 指纹。它们不需要任何权限,网页在后台悄悄跑一下就能拿到。

Canvas 指纹

网页让浏览器在一块看不见的画布上绘制一段文字和图形,再读取像素数据算出哈希。同样的代码,在不同的显卡、驱动、操作系统和字体渲染设置下,产出的像素会有极其细微但稳定的差异——这个差异就成了你的"画布签名"。

WebGL 指纹

WebGL 用于 3D 渲染,它能进一步暴露你的显卡厂商与型号(例如 "NVIDIA GeForce RTX..."),以及渲染复杂图形时的细微差异。显卡型号本身就极具区分度,再叠加渲染哈希,唯一性很高。

Audio 指纹

Audio 指纹不会播放任何声音。它用 OfflineAudioContext 在内存里合成一段波形,经振荡器、压缩器处理后读取输出数值。不同设备的音频栈实现略有差异,数值因此可作为又一个稳定特征。

为什么难防

这三项反映的是真实硬件,普通用户很难改变;而刻意随机化又可能让你显得"与众不同"。它们也是为什么"换个 UA、清个 Cookie"基本拦不住指纹追踪的原因。

怎么应对

  • 使用带反指纹保护的浏览器(会对 Canvas/WebGL 加噪或返回统一值)。
  • 避免安装大量罕见字体或插件,减少额外区分度。
  • 在本站首页查看自己的 Canvas/WebGL/Audio 指纹哈希,了解暴露程度。