版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jinsedeme0881/article/details/79064788
浏览器指纹是什么?是一个能够唯一标识当前浏览器的一串字符串。
github地址 https://github.com/Valve/fingerprintjs2
通过这个js可以获取到当前浏览器的指纹。
他具体是通过如下参数计算得到的
要素名 | 中文解释 |
user_agent | 用户代理,包含浏览器版本号 |
language | 浏览器设置的当前语言 |
color_depth | 屏幕颜色深度 |
device_memory | 是否支持设备内存调试(估计是针对移动端测试) |
pixel_ratio | 是否支持像素比例调整 |
hardware_concurrency | 是否支持硬件并发性 |
resolution | 屏幕分辨率 |
available_resolution | 可用的屏幕分辨率 |
timezone_offset | 格林威治时间和本地时间之间的时差,以分钟为单位 |
session_storage | 是否支持session_storage,这是html5的标准特性之一 |
local_storage | 是否支持local_storage,这是html5的标准特性之一 |
indexed_db | 是否支持浏览器端数据库,html5新特性之一 |
cpu_class | navigator.cpuClass cpu类型 unknown |
navigator_platform | 所在操作系统平台,例如win32 |
do_not_track | 隐私设置相关属性,用户是否允许网站追踪自己的喜好 |
regular_plugins | 安装的插件信息(例如装了pdf插件) |
canvas | 画布。用画布api画了一个长方形,然后转为base64字符串 |
webgl | 网页3D绘图协议。把对webgl的支持情况汇总起来的信息 |
webgl_vendor | webgl的提供商和显卡情况 |
adblock | ad block 是否支持广告阻止 |
has_lied_languages | 浏览器语言是否等于浏览器设置的第一语言 |
has_lied_resolution | 分辨率的比较 screen.width < screen.availWidth screen.height < screen.availHeight |
has_lied_os | 判断系统平台platform是否真实可靠(lied说谎) |
has_lied_browser | 判断浏览器是否检测的真实可靠(lied说谎) |
touch_support | 是否支持触控 |
js_fonts | 检测字体的支持情况 |
最终难以使用浏览器指纹作为客户端唯一标识的原因是: 浏览器经常 会自动升级,自动升级就会导致浏览器指纹发生变化。
因为我们使用白名单机制,这时候就需要更新白名单登记。