指纹 软件 C

ClientRects

1. 浏览器指纹中的 ClientRects 是什么

getBoundingClientRect() 方法返回元素的大小及其相对于视口的位置。现代网站通过分析 JavaScript 布局 API 和浏览器 渲染计算 在不同条件下的行为来指纹用户:

  • DPI / 缩放设置
  • 字体加载差异
  • 缩放级别变化
  • 浏览器引擎布局引擎(例如 Blink、WebKit、Gecko 样式)

一些反欺诈平台观察模式,如:

  • 缩放的子像素精度
  • 基于浮点数的布局位置的四舍五入和小数处理
  • 用于测试的标准隐藏容器的相对尺寸差异

尽管经常被忽略,ClientRects 指纹可以 泄露浏览器可缩放行为,这种行为在会话中非常一致——而且在不破坏布局相关 UI 功能的情况下极难伪装。


2. 平台如何检测 ClientRects 指纹

反欺诈系统可以通过以下方式指纹浏览器:

  1. 测量不可见测试元素的框坐标:通过将元素隐藏在屏幕外或永久隐藏在布局中,它们可以比较预期值与实际 rect 值,以发现伪装迹象。
  2. 在缩放期间观察缩放行为:一种简单但有效的方法——观察者跟踪浏览器在模拟“缩放”或调整大小期间的变换和 rect 更新,并进行交叉引用逻辑。
  3. 浮点计算泄露:微小的十进制精度差异可以识别浏览器引擎的内部布局引擎——例如,Chrome 的计算方式不同于 Safari 或 Firefox。
  4. CSS 样式一致性:一些高级系统利用由样式更新引起的 reflow 和 relayout 变化,这些变化体现在 rect 数据中,以推断浏览器不一致性。
  5. 字体大小四舍五入检查:使用固定字体大小的预渲染测试元素可以揭示字体渲染引擎,这些引擎通常与操作系统类型相关,如 Windows、macOS 或 Linux/Android。

如果布局渲染浮点数过于数学上“干净”或甚至无法按照最细微的渲染规则变化——FlashID 以 真实偏差模式 创建这些——那么反指纹引擎会将这些记录为异常。


3. FlashID 如何掩盖 ClientRects 指纹

与其他仅伪装高级值的平台不同,FlashID 提供细粒度层控制来模拟真实的缩放行为,确保:

  • 表观的像素数学一致性,同时微妙地禁用可追踪性
  • 自然随机模式,模仿真实的渲染差异

FlashID 的 ClientRects 指纹解决方案包括:

  1. 通过动态元素操作进行 ClientRect 伪装:FlashID 动态注入并解析矩形测量,根据每个浏览器配置文件返回自定义但 合理的 rect 值
  2. 可调节四舍五入精度:rect 尺寸的浮点精度可以每会话略微配置——反映自然的浏览器和系统行为。
  3. 与 CSS/字体和缩放模块的伪装同步:ClientRects 伪装与浏览器字体、缩放和样式设置紧密协作,确保匹配预期的渲染输出。
  4. Delta 方差注入:FlashID 向基于 rect 的测量注入人工方差以防止会话匹配——但在浏览器预期四舍五入或布局“噪声”范围内。
  5. 避免标准不可见 DOM 检查:系统模拟并计算所有必要的 rect 值,即使对于隐藏元素,欺骗检测系统相信异常行为。
  6. 测量元素抖动:针对每个配置文件,对元素尺寸值应用轻微偏差和抖动,为 FlashID 浏览器实例提供真实的渲染配置文件。

这种行为隔离确保即使在专注于深度 reflow 跟踪的网站上,你的 FlashID 浏览器也保持 不相关非关联难以追踪,使用布局方法。


您可能还喜欢

FlashID blog avatar image
运行多个帐户,不受封禁和屏蔽
免费试用

多账户安全防护,从 FlashID 开始

通过我们的指纹技术,保持不被追踪。

多账户安全防护,从 FlashID 开始