realfp.com

什么是字体指纹?

字体指纹是浏览器指纹的另一个重要维度。当你的设备上安装了特定字体,或者缺失了某些字体时,这些信息可以被用来生成一个独特的标识符。

每个人的设备上安装的字体组合都是独特的——尤其是对于那些安装了大量非标准字体的用户来说,这种独特性更为明显。因此,字体信息可以成为一个相当精确的浏览器指纹组成部分。

字体指纹的实现原理
字体指纹主要通过浏览器的 JavaScript API 来实现。其核心原理是:浏览器可以获取并报告用户设备上可用的字体列表,这些字体信息结合其他浏览器和设备特征,共同形成一个独特的指纹。

常见的字体指纹采集方法有以下三种:

方法一:字体枚举(Font Enumeration)

这是最直接的方法。网站通过浏览器提供的 API 直接获取一份完整的已安装字体列表,就像查看设备上安装了哪些应用程序一样简单。

方法二:字体检测(Font Detection)

这是一种更隐蔽的方法。网站让浏览器用特定字体渲染一段文本,然后测量这段文本的尺寸。如果该字体已经安装,文本的显示尺寸会与默认字体有所不同——网站通过这种“试错”的方式,逐个判断某个字体是否存在于你的设备上。

方法三:画布指纹(Canvas Fingerprinting)中的字体检测

这是一种更复杂的方法。网站在一个不可见的虚拟画布上绘制一段文本,然后分析这段文本的像素排列方式。不同字体会导致像素排列的差异,网站通过对比这些像素模式来判断你的设备上是否安装了特定字体。