1. 什么是屏幕指纹
浏览器的 屏幕指纹 是指通过 window.screen 对象暴露的一组设备特定的显示属性:
screen.width
screen.height
screen.colorDepth
screen.pixelDepth
screen.availWidth
screen.availHeight
window.devicePixelRatio
这些值帮助平台推断:
- 设备类型(桌面、移动、平板)
- 可能的缩放或比例设置
- 显示器数量(通过
window.screenLeft、window.screenTop) - 用户区域(通过分辨率 + OS,有时与 IP 交叉验证)
- 浏览器最大化状态(通过屏幕与窗口尺寸的启发式方法)
虽然屏幕指纹本身不足以唯一识别用户,但结合其他信号如 Canvas、User Agent、时区 和 WebGL 时,它成为浏览器指纹独特性的核心元素。
2. 平台如何检测屏幕指纹
反多账户和指纹平台广泛监控与屏幕相关的值。检测技术包括:
- 分辨率一致性检查 – 与其 OS 或地理位置的典型设备不同的
screen.width和screen.height值可能会引起怀疑。 - devicePixelRatio 分析 – 一些平台分析屏幕密度(
window.devicePixelRatio)以确定其是否符合真实浏览器行为(例如,macOS 上的 Retina 显示屏)。 - 可用屏幕尺寸与窗口尺寸监控 – 常用启发式方法:比较屏幕尺寸与实际窗口尺寸,以检测浏览器是否为 全屏、最大化、在虚拟机中 或扭曲。
- 与设备类型交叉检查 – 例如,如果屏幕显示桌面计算机典型的 resolution,但用户代理声称是 Android,这种不匹配可能用于标记会话。
- 非现实值检测 – 一些反伪装引擎可以检测伪装分辨率是否为目标用户代理配置文件的“异常值”,表明指纹操纵工具。
- DOMRect 和布局行为注入跟踪 – 平台可能监控屏幕相关的布局元素(
window.screenX、window.scrollX)在调整大小期间的行为,以检测合成环境。
屏幕值通常与 行为伪装检测逻辑 链接,并由基于规则或 ML 驱动的系统用于在用户入驻或认证期间计算 设备信任分数。
3. FlashID 如何修改屏幕指纹
FlashID 为用户提供完全自定义和持久化 屏幕指纹数据 的能力,确保每个浏览器配置文件表现得像一个 独立的物理设备,即使从同一系统启动。
关键屏幕操纵功能包括:
- 分辨率掩码
- 每个浏览器设置
screen.width和screen.height以模仿真实设备 - 从标准尺寸中选择或输入自定义尺寸(例如,
1440x900、1920x1080、1242x2208)
- 颜色深度 & 像素深度仿真
- 伪装
screen.colorDepth、screen.pixelDepth以准确反映模拟硬件(例如,24 位、8 位、32 位)
- 设备像素比控制
- 每个实例自定义
window.devicePixelRatio(例如,Retina MacBook 的2.0或旧 Windows 笔记本的1.0)
- 真实的 availWidth/availHeight 模拟
- 反映可用桌面区域(排除任务栏或 Dock),提高桌面模式的真实性
- 屏幕方向功能控制
- 根据预期设备类型模拟屏幕方向(
portrait或landscape)
- 分辨率到用户代理匹配
- FlashID 根据选定的用户代理和操作系统自动推荐分辨率和设备尺寸配置文件 — 有助于避免不匹配标记
- ScreenChangeEvent 行为模仿
- 伪造
orientationchange或调整大小事件,以模仿真实浏览或设备传感器行为
通过完全控制 window.screen API,FlashID 消除了由于共享屏幕签名而可能将多个配置文件关联起来的跨会话泄漏,使用户能够实现 合理且不可检测的多账户操作。
您可能还喜欢

