1. 什么是字体指纹识别
字体指纹识别指的是通过以下方法枚举并识别用户系统中可用字体的列表的技术:
document.fontsAPI- 字体大小/宽度渲染一致性(基于时序或像素检测)
- 基于 Flash 或 CSS 的字体探测
- 使用
Canvas检测字体支持并测量文本渲染差异
虽然不像 WebGL 或 Battery 那样绑定特定 API,但字体的可用性在不同设备间差异显著,使其成为用户唯一性的软指标。
它通常与其他指纹(Canvas、User-Agent、OS、语言)结合使用,以提高浏览器匹配准确性,特别是在:
- KYC 和身份平台
- 多账户检测系统
- Web 会话勾结检测
2. 平台如何指纹化字体可用性
反欺诈和广告技术系统通常会钩入以下一种或多种方法:
document.fonts.keys()和check():枚举浏览器中字体是否支持并可使用。- Canvas 字体渲染:通过使用特定字体绘制文本并测量渲染输出,可以间接识别字体。
- 系统字体注入检测:某些启发式方法通过字体名称或家族可访问性检测是否由 Puppeteer 等工具注入字体。
- 字体子集化和加载时序:字体变为“可用”或“不可用”的时序可用于检测浏览器自动化足迹。
- CSS
@font-face探测:系统可能加载已知 Web 字体,并检查浏览器如何处理回退渲染或时序,以推断内部浏览器配置。
网站可以从字体构建派生配置文件来增强设备唯一性——检测异常情况,例如:
- “系统字体过多”或“无”
- 与位置或报告的 OS 不一致的字体
- 不寻常的黑名单或标记字体(如伪装器中使用的辅助字体)
3. FlashID 如何使字体指纹安全且一致
FlashID 控制并指纹化字体渲染行为的所有方面,确保浏览器配置文件看起来一致、真实且唯一。
FlashID 掩盖或模拟字体的以下方式:
- 字体列表隔离:每个浏览器配置文件维护独立于底层主机系统的自己的字体列表。可以模拟隐藏系统字体以反映任何地理位置或 OS 区域。
- Canvas 文本伪装算法:FlashID 在 Canvas 渲染期间精确更改文本宽度和字形样式回退值,以模拟特定字体列表——即使在无头或受保护的配置文件中。
- document.fonts 控制:
- 模拟
FontFaceSet签名 - 控制
check()返回值 - 模拟字体加载时序/延迟
- 字体名称混淆:FlashID 可能重命名系统字体(例如,将“Arial”重命名为“Calibri”),以避免确定性匹配,同时确保真实的分布和渲染行为。
- 跨 OS 字体模拟:FlashID 允许模拟其他操作系统的字体列表,帮助打破平台-字体相关性。
- 字体顺序随机化:每个浏览器实例的字体查询顺序随机化,以避免通过排序或可访问性模式进行统计重新识别。
- 无字形绘制保护:某些平台通过观察后台模式下是否发生字形绘制来检测活动浏览器自动化。FlashID 实时模拟正确的绘制行为和字体权限。
通过提供对字体指纹化表面的完全控制,FlashID 确保浏览器配置文件免受被动字体分析和后端勾结模型触发的统一识别。
您可能还喜欢

