知识分享
Knowledge

知识分享
Browser fingerprinting
什么是"Browser Fingerprint"?
Browser Fingerprint是一组浏览器 + PC等客户端的特性, 依赖这组特性, 我们可以几乎唯一的识别这些浏览器和客户端. 而且获得这些属性不需要额外要求权限.
例子:
Attribute | Value |
|---|---|
Attribute | Value |
| User agent | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36 |
| accept | Text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8 |
| encoding | gzip, deflate, br |
| languages | En-US, with q = 0.5 |
| List of plugins | 0: Chrome PDF Plugin; 1: Chrome PDF Viewer; 2: Native Client; 3: Widevine Content Decryption Module; |
| Platform | Win32 |
| Allowed cookies | Yes |
| Do not track | Yes |
| Time zone | -480 |
| Screen resolution | 1366x768x24 |
| Local storage | Yes |
| session storage | Yes |
| Canvas | |
| WebGL Vendor | Google Inc. |
| WebGL Renderer | ANGLE (Intel(R) HD Graphics 520 Direct3D11 vs_5_0 ps_5_0) |
| List of fonts (Flash) | Flash not detected |
| Screen resolution (Flash) | Flash not detected |
| Language (Flash) | Flash not detected |
| Platform (Flash) | Flash not detected |
| AdBlock | Yes |
属性的稳定性
作为浏览器"指纹", 我们要求2个特点, 1) 稳定(几乎不会变化) 2) 唯一(几乎). 但有些属性是难免要更新的, 比如浏览器的版本升级. 按照这些更改的发起方, 我们把他分成3大类, 用户/自动/环境.
用户: 用户自己更改了某个选项的值. 自动: 浏览器自动升级. 环境: 比如用户去了另外一个地点出差, 或者临时接了另外的显示器或者投影.
Attribute | trigger | 90th | 95th |
|---|---|---|---|
Attribute | trigger | 90th | 95th |
| Screen resolution | 环境 | 3.1 | 1.8 |
| User agent | 自动 | 13.0 | 8.4 |
| List of plugins | 自动 / 用户 | 12.2 | 8.7 |
| List of fonts | 自动 | 11.8 | 5.4 |
| HTTP headers | 自动 | 34.1 | 14.9 |
| Canvas | 自动 | 35.3 | 17.2 |
| Browser version | 自动 | 33.3 | 23.5 |
| Time zone | 环境 | 53.8 | 26.8 |
| WebGL Renderer | 自动 | 81.2 | 30.3 |
| WebGL Vendor | 自动 | 107.9 | 48.6 |
| languages | 用户 | 215.1 | 56.7 |
| Do not track | 用户 | 171.4 | 57.0 |
| encoding | 自动 | 106.1 | 60.5 |
| accept | 自动 | 163.8 | 109.5 |
| Local storage | 用户 | Never | 320.2 |
| Platform | 自动 | Never | Never |
| Cookies | 用户 | Never | Never |
从这个表能看出, User Agent相对变化的比较频繁, 因为浏览器厂商会经常推送更新; 而language这种属性就很少有变化.
跟踪算法
请访问公司K站(知识库获取后续内容)
