什么是 WebGL 指纹?
Scrapeless Agent Browser 在云端运行可控的浏览器会话以执行动态网页任务,并针对选定的浏览器指纹属性公开有文档记录的设置。
什么是 WebGL 指纹?
WebGL 指纹是收集与图形相关的浏览器特征和渲染结果,以帮助区分浏览器或设备的一种做法。收集方可以检查支持的能力、可用扩展,以及选定绘图操作的输出。所得集合或哈希值是关于图形环境的一个信号。
WebGL 本身是图形接口,而不是跟踪功能。地图、可视化或设计应用可以使用它来渲染内容。当观察者利用该接口的特征进行识别或关联时,就产生了指纹。仅仅看到页面创建图形上下文本身并不能证明正在进行跟踪。
该 WebGL 规范 定义了图形 API 及其可观察行为。指纹系统会从这些观测中选取一个子集,并可能将其与无关的浏览器属性组合。不存在一个所有网站都以相同方式计算的通用“WebGL 指纹”。
总结
- WebGL 指纹描述的是一个图形环境。 它们可以包括能力信息和渲染输出。
- 渲染器名称只是众多观测中的一个。 许多浏览器都可能暴露类似的图形信息。
- 图形结果取决于软件路径以及硬件。 驱动程序和浏览器的变化会影响观测结果。
- 代理路由不会直接改变 WebGL 输出。 网络路径和图形环境是分离的层。
页面可以观察到哪些图形信号?
页面可以观察其 WebGL 上下文所提供的能力和输出。这些可能包括参数上限、支持的扩展、着色器精度信息,以及从渲染场景中读回的数据。可用性随浏览器、图形实现和隐私设置而变化。
该 WebGL debug renderer information extension 在扩展可用时,会暴露未屏蔽厂商和渲染器信息的常量。网站不能假定每个浏览器都提供它。一个不可用的扩展是对当前上下文的一个观测,而不是对访问者的定论。
渲染器信息可以描述硬件设备、翻译层或软件路径。读取标签与直接测量物理显卡是两回事。虚拟化环境可能暴露由宿主选择的实现。浏览器也可能出于隐私原因限制返回的信息。
为了诊断,请连同观测值一起存储该观测的含义。区分“扩展不可用”和“扩展可用但渲染器值缺失”。如果这些情况都被折叠为空字符串,后续分析可能会把缺失数据误认为是共享设备特征。
渲染输出如何变成指纹?
当收集方绘制选定场景、读取产生的数据并总结这些数据以进行比较时,渲染输出就会成为指纹。细小的实现差异就能影响输出。收集方决定使用哪种场景、尺寸、设置和序列化方法。
哈希可以方便比较,但也会隐藏差异的原因。如果哈希发生变化,可能是场景变了、环境变了,或者采集失败。若没有版本化的采集方法和基本执行证据,一个变化的哈希难以解释。
考虑一个用于基于 WebGL 的图表的示例兼容性测试。团队用同一测试页面比较云浏览器和本地浏览器。截图不同。在把差异归因于指纹之前,先检查视口尺寸、设备缩放、字体加载、颜色设置和图形路径。图形缺陷和隐私观测是不同的发现,即使它们都始于同一张截图。
一个可靠的实验会保持页面和采集方法不变。记录浏览器版本、运行环境、测试修订版本,以及图形初始化是否成功。避免在没有合适人群研究支撑的情况下,发表某个渲染器在全球范围内唯一的结论。
WebGL、Canvas 与 TLS 指纹对比
WebGL、canvas 和 TLS 指纹观察的是浏览系统不同的层。WebGL 与图形上下文相关。Canvas 指纹通常指通过其他渲染 API 在画布上绘制并读取。TLS 指纹观察的是页面普通 JavaScript 环境之外的连接握手特征。
| 信号 | 观测点 | 典型上下文 |
|---|---|---|
| WebGL 能力 | 页面 JavaScript 使用图形上下文 | 扩展、限制、渲染器暴露情况 |
| 渲染图形输出 | 由定义好的绘图操作产生的数据 | 对图形实现行为的比较 |
| 其他 canvas 输出 | Canvas 绘制与读回 | 文本和绘图行为 |
| TLS 指纹 | 对握手进行观测的服务器或网络观察者 | 客户端网络实现特征 |
页面级脚本不能简单地通过 WebGL 读取自身连接的 JA3 或 JA4 值。该测量需要能访问相关握手的观察者。在调试工具中明确保持这种区分,这样浏览器检查就不会暗示执行了它从未进行的网络测量。
为什么 WebGL 指纹识别对隐私很重要?
WebGL 指纹对于隐私很重要,因为图形特征可能会帮助在多次访问中识别同一浏览器。其重要性取决于该信号如何被组合、能保持稳定多长时间,以及观察者还掌握了哪些其他信息。
该 W3C 关于指纹识别缓解的指导 描述了暴露的浏览器特征如何产生识别和关联风险。某个信号并不需要对所有人进行唯一识别就能在较小的人群中提高可关联性。同样,匹配的信号也不能证明两次访问来自同一个人。
对于产品团队来说,应仅收集为实现既定诊断目的所需的最少细节。例如,兼容性报告可能需要区分软件渲染器和硬件路径,但无须保留持久性的访问者标识符。应说明收集的内容并限制保留期限。将图形相关观测数据与账户记录相结合,会改变数据集的隐私影响。
对于用户而言,隐私控制可以减少暴露、标准化数值,或限制某些回读内容。每种方式都具有兼容性方面的影响。禁用图形功能可能会影响地图或可视化工具。随机化可能会使重复的观测结果有所不同,但并不能保证更广泛的浏览会话无法被关联。
指纹自定义究竟涵盖了什么?
指纹定制仅涵盖特定实现明确支持的属性。对 User-Agent 的控制并不意味着对着色器输出的控制,而屏幕尺寸设置也并不意味着对物理 GPU 的更改。
当前 Agent Browser 自定义指纹设置 描述所选控件及其局限性。已记录的 User-Agent 功能不会修改渲染引擎的细节,例如 WebGL 渲染特性。该文档还区分了基本屏幕尺寸与设备像素比以及硬件级指纹识别。在设计测试时,请使用这些既定边界。
The Scrapeless Agent 浏览器服务 在你的任务需要受管控的浏览器环境和真实页面执行时才相关。它不应被描述为通用的 WebGL 欺骗开关。需要特定图形功能的应用程序必须在预期的环境中测试该功能。
代理对于网络路由很有用,但它不会直接替代浏览器的图形实现。如果在修改代理配置后,受控测试显示不同的 WebGL 结果,请检查该工作流程是否还创建了新的浏览器会话或更改了其他变量。仅仅路由的变化不足以确定原因。
实用图形验证计划
有用的图形验证计划在不声称超出观察所支持的身份证据的前提下,衡量兼容性和一致性。请在你自己的测试页面或你被授权评估的来源上运行该计划。
- 定义目的。 决定你是在检查渲染是否正确、诊断缺失的能力,还是衡量隐私暴露。这些任务需要不同的证据。
- 为测试进行版本控制。 将绘图说明和环境记录保留在结果中。新场景会产生新的测量方法。
- 记录失败状态。 上下文创建失败和缺失扩展应与已完成的渲染结果保持区分。
- 比较重复的观测结果。 在将受控环境与另一个环境进行比较之前,先检查同一受控环境的行为是否一致。
- 验证应用结果。 确认图表、地图或其他所需内容实际可用。指纹哈希不能代替对用户所需功能的检查。
相关解释 WebGL 指纹信号 提供背景信息,而当前的产品文档决定可用设置。使用…来规划实际的浏览器工作负载 无爬取定价 以及您测量到的页面行为。避免假设一次图形测试就能确定某个第三方安全系统会接受所有未来的会话。
结论
WebGL 指纹识别将可观察的图形行为作为更广泛识别流程的一部分。谨慎读取渲染器信息,区分收集到的哈希值与设备身份,并在其文档描述的范围内测试受支持的浏览器控制。对于自动化而言,关键检查在于:被允许的页面是否能渲染出你的工作流程所需的内容。
构建一个可验证的工作流
选择适用于你所获许可数据源的 Scrapeless 服务,然后将返回的内容与应用程序所需的字段进行比对。
立即注册即可获得 5 美元免費額度 — 无需信用卡.
领取您的 $5 额度 →常见问题
问:WebGL 指纹能揭示出一块唯一的显卡吗?
WebGL 指纹不能可靠地确定唯一的物理显卡。它暴露的是图形环境的特征,而这些特征可能被多个设备共享。
问:VPN 会改变 WebGL 指纹吗?
VPN 会改变网络路由,但不会直接改变 WebGL 渲染。不同的浏览器会话或主机环境可能会引入各自独立的图形变化。
问:每一次使用 WebGL 都是在进行指纹采集吗?
仅仅使用 WebGL 并不构成指纹采集。许多合法应用需要图形渲染;是否用于识别取决于收集了哪些观测数据以及这些数据如何被使用。
问:User-Agent 设置会改变 WebGL 输出吗?
User-Agent 设置本身不会改变 WebGL 输出。请检查浏览器公开的渲染控制选项,并独立验证图形结果。