基础概念 / 基础概念

Canvas 与字体指纹:网站能看到什么?

解释 Canvas 绘制、像素读取与字体检测如何形成环境特征,以及为什么它只是概率性信号,不是唯一身份证。

核对边界 · 标注来源 · 不承诺平台结果
核心结论

Canvas 指纹来自同一段绘制指令在不同设备、驱动、字体和浏览器实现下产生的像素差异;字体指纹则观察可用字体集合或渲染结果。它们能增加环境特征的区分度,但会受版本、缩放和隐私设置影响,不能单独证明“同一个人”。

  • 01Canvas 指纹利用绘制结果的像素差异,字体指纹利用可用字体或渲染差异。
  • 02它们受显卡、驱动、字体、缩放和浏览器版本影响,是概率性特征,不是唯一身份证。
  • 03比较两个环境时,应记录版本与条件并重复测试,不要追逐某个检测页的分数。

01Canvas 指纹怎么产生

网页可以用 Canvas API 绘制文字、图形或渐变,再通过读取像素数据得到一段结果。不同设备的图形驱动、字体栅格化、抗锯齿和浏览器实现,可能让同一段绘制产生细微差异;网站可以把这段结果转换成哈希,作为环境特征之一。

这并不意味着网站能读取你的屏幕或文件。它读取的是浏览器按照指令绘制出来的结果。隐私设置、浏览器版本更新、缩放比例和操作系统变化都可能改变结果,因此同一个设备在不同条件下也可能得到不同值。

02字体指纹怎么产生

字体指纹通常通过测量不同字体下文字的宽高、间距或渲染结果,推断设备安装了哪些字体。安装字体集合不同,结果可能不同;但字体版本、替换字体和浏览器限制都会影响判断。

一些浏览器会限制字体枚举或对字体测量做隐私处理,所以检测结果可能因浏览器而异。看到“字体列表”时,要区分真实安装字体与浏览器暴露的近似信息。

03为什么不是唯一身份证

因此,不能因为两个环境显示不同哈希就断定它们一定被区分,也不能因为哈希相同就断定不会被关联。指纹是概率性信号,解读时要保留条件与不确定性。

  • 碰撞:不同设备可能产生相同或相近的结果。
  • 漂移:浏览器升级、驱动更新、缩放变化都会改变结果。
  • 随机化:部分浏览器会对 Canvas 结果加入噪声。
  • 不完整:指纹只是网站可用信号之一,账号、Cookie、网络和行为也在其中。

04对多账号工作的意义

多账号管理关注的是环境特征是否稳定、是否符合目标平台的实际要求,而不是“分数越高越好”。如果环境配置频繁随机变化,可能让同一账号的表现前后不一致;如果所有环境完全一样,也可能降低区分度。

更实际的做法是:固定浏览器版本与配置,记录每个环境的关键特征,在实际目标页面上做只读测试,并观察一段时间内的稳定性。不要用单一检测页的结果替代业务验收。

05怎样做一次可重复的观察

观察记录的价值在于可复查。只写“指纹正常”没有信息量;写清版本、条件、结果和未验证范围,才能帮助下一位同事判断是否需要调整。

  • 记录浏览器版本、操作系统、屏幕缩放、语言和时区。
  • 在同一页面连续读取两次,观察结果是否稳定。
  • 关闭重开后再读一次,区分会话变化与环境变化。
  • 换一个浏览器版本重复,判断差异来自版本还是配置。
  • 保存原始结果与时间,不只保存“通过/不通过”。
FAQ / 常见问题

关于这篇指南,常被问到的。

QCanvas 指纹能唯一识别一台电脑吗?

不能保证。它可能增加区分度,但会碰撞、漂移,也可能被浏览器随机化。它只是众多信号之一。

Q关闭硬件加速会改变指纹吗?

可能。渲染路径变化会影响 Canvas 和 WebGL 结果,但具体变化取决于浏览器、驱动和页面实现,应实际测试。

Q字体装得越多越安全吗?

不一定。字体集合只是特征之一,刻意堆叠字体也可能造成不一致。更重要的是环境稳定、符合目标平台的实际使用场景。

SOURCES / 资料来源

参考资料

编辑说明

本文提供通用工作方法与产品边界说明。具体平台规则、权限、界面与可用功能以目标平台当前说明和实际版本为准。示例编号、金额与界面均为说明用途,不代表客户数据或效果承诺。

上一篇API、固定工作流和 AI 浏览器助手应该怎么选? 下一篇WebRTC 会泄露真实 IP 吗?先分清三类地址

MATRIXFLOW / PRODUCT

让环境管理,
回到工作本身。

MatrixFlow 把多账号浏览器环境、代理与 AI 助手放在同一个工作台。具体能力与支持范围以产品当前版本为准。

了解 MatrixFlow