浏览器指纹简介
1、什么是浏览器指纹
什么是浏览器指纹?一种比较通俗的说法是:当使用浏览器访问网站时,网站会在浏览器中执行一段JavaScript(以下简称JS)脚本, JS脚本能够把当前浏览器的所有相关信息查询出来,并对查询出来的信息进行编码,间接形成一个唯一的标识,我们把这个唯一的标识称之为浏览器指纹。
听起来有些晦涩,我们以智能音箱“天猫精灵”的一个小游戏“你想我猜”来做个对比,这个游戏内容是:你在心里想一个人物,天猫精灵会问你一些问题, 如:他是男的吗?他是封建王朝的人物吗?他结过婚吗?等等,当你回答了这些问题后(一般不超过20个问题),天猫精灵就会告诉你,你心里想的那个人物是谁。
浏览器指纹本质上也是如此。一段指纹信息包含的内容可能有:当前浏览器内核是什么版本?浏览器所在主机的分辨率是多少?所在主机安装了什么显卡? 显卡的驱动程序是什么版本?安装了哪些字体?安装了哪些插件?浏览器播放音频的设备有几个?设备编码分别是什么? 也许这些信息看起来就像天猫精灵问你的问题一样,都是通用的、非特定的问题,但当这些问题的答案组合在一起, 天猫精灵就可以判断出来你心里想的是谁,而浏览器的这些信息就可以汇总成判断当前浏览器唯一性的“编码标识”, 我们把这个“编码标识”形象的称之为浏览器指纹。
简而言之,网站可以通过浏览器指纹来判断浏览器的唯一性,并进而判断使用浏览器的用户的唯一性——即便你并没有登录网站,但网站仅仅通过你的浏览器指纹, 便能够判断出当前访问者是谁。
以下图为例,便展示了一个浏览器指纹所包含的相关信息。

《浏览器指纹信息》
2、关于浏览器指纹特征码
在计算机学科中有一个“消息摘要算法”,是指对输入内容进行某种计算,从而形成一个唯一的特征码,而输入内容的任何一点变化,都将影响到生成的特征码。 在花漾中,会对浏览器指纹包含的所有信息进行消息摘要算法,计算结果是一个16进制的数字,我们称其为“浏览器指纹特征码”, 您可以通过特征码的唯一性来验证浏览器指纹是否重复。

《浏览器指纹特征码》
3、关于浏览器指纹模板
浏览器指纹的核心特征是:真实且唯一(这里指的是相对的唯一,而非绝对意义上的唯一)。在花漾中,指纹信息被分成6大类,合计20多个小项,通过这些项目的排列组合, 确保浏览器指纹信息的唯一性相对而言是比较简单的,问题是如何在确保唯一性的基础上还要确保浏览器指纹的真实性。
业界绝大部分厂商仅仅提供了指纹实例的配额及相关可选项,至于指纹信息如何生成则交由用户手动配置,对用户特别是对计算机知识较为缺乏的小白用户而言,这是极为荒谬的。 试问,用户如何知晓在不同的操作系统下选择怎样的显卡?如果将某个显卡的驱动程序配置到了一个并不支持的操作系统之上,这岂非是告诉网站,这个指纹是伪造的? 针对这些问题,花漾在业界首创 “采集物理世界的浏览器特征信息以形成指纹模板,再通过对指纹模板加以微调与噪音从而裂变成若干枚指纹实例” 的创新性做法, 确保了每一个指纹实例都是真实且唯一的。
在花漾中采集浏览器指纹模板如下图所示:

《采集浏览器指纹信息以形成指纹模板》
关于浏览器指纹模板更详细的介绍,请参考 浏览器指纹模板 。
4、关于浏览器指纹实例
有了浏览器指纹模板,我们就可以通过模板创建生成若干个指纹实例。由于指纹模板采集于物理世界真实浏览器的指纹信息,故指纹模板是真实的; 而指纹实例是在指纹模板的基础之上通过施加噪音与微调裂变而成,因此,在花漾中生成的浏览器指纹实例也可以确保其真实性与唯一性。
在花漾中通过浏览器指纹模板生成指纹实例如下图所示:

《通过浏览器指纹模板以生成指纹实例》
关于浏览器指纹实例更详细的介绍,请参考 浏览器指纹实例 。
5、视频教程
您也可以观看下述视频教程,辅助您完成如何采集浏览器指纹模板,并通过指纹模板创建指纹实例。