realfp.com

什么是Client Rects?

Client Rects 是浏览器提供的一组 API,用于获取网页元素的布局信息,包括元素在页面上的精确位置和尺寸大小。这些信息以“矩形”(rects)的形式返回,包含了元素的顶部、底部、左侧、右侧、宽度和高度等详细数据。

Client Rects 如何成为指纹?
Client Rects 之所以能够成为一种浏览器指纹追踪技术,核心原因在于:即使两台设备打开的是完全相同的网页,由于硬件配置、操作系统、浏览器类型和版本、屏幕分辨率、字体设置等因素的差异,最终渲染出的网页元素布局信息也可能各不相同。

举个例子:同一段文字或同一个按钮,在一台设备上可能显示得稍大一些,在另一台设备上则可能位置略有偏移。这些细微的差异肉眼难以察觉,但通过 Client Rects API 却可以被精确捕捉。

Client Rects 指纹的生成流程
网站通过 Client Rects 获取浏览器指纹,通常包含以下步骤:

第一步:选择或生成目标元素

网站首先需要选定一个用于采集布局信息的元素,可以是一个文本框、一个按钮,或者页面上任何已有的元素。为了提高指纹的稳定性和独特性,网站也可能会动态生成一个专门用于指纹采集的隐藏元素。

第二步:获取元素的 Client Rects

通过 JavaScript 调用元素的 getClientRects() 方法,获取该元素的布局信息。返回的数据中包含了元素的位置和尺寸信息——顶部(top)、底部(bottom)、左侧(left)、右侧(right)、宽度(width)和高度(height)等。

第三步:记录或处理数据

网站会记录这些原始数据,或者对数据进行进一步处理。例如,计算元素的面积(宽度 × 高度)、计算元素与其他元素的相对位置关系等。

第四步:生成浏览器指纹

最后,网站将这些布局信息与其他数据(如 IP 地址、用户代理字符串等)结合起来,通过特定算法生成一个独特的浏览器指纹,用于识别和追踪用户。

需要注意的是,这只是一个简化的示例。在实际操作中,网站可能会采集多个元素的 Client Rects 数据,并进行更复杂的统计和分析,以提高指纹的唯一性和稳定性。

可以把 Client Rects 理解为网站的一把“尺子”——它精确测量你的浏览器如何渲染和排布页面元素,而这些测量结果在不同设备之间存在微小但可识别的差异。