什么是指纹浏览器?在回答这个问题之前,我们首先需要了解什么是IP地址、什么是Cookie,以及什么是浏览器指纹。
首先我们需要搞清楚的是,当打开浏览器访问一个网站的时候,网站如何判断你是谁?或者说,网站如何跟踪你的信息?一般而言,网站会用到IP地址和Cookie这两项技术。
1、关于IP地址
当打开浏览器访问网站时,本质上是你的浏览器通过一个IP地址和网站建立了通讯链路,只不过浏览器使用的IP地址可能绑定在浏览器所在电脑, 也可能绑定在你家里或者公司的无线路由器上。因为IP地址是由国际组织按照某种规则统一分配的,所以通过IP地址,网站就可以知道你大概的地理位置 (关于IP地址更详细的介绍请阅读 《纯净IP地址--跨境人的爱恨情仇》 一文)。 以笔者为例,当我打开浏览器访问 ip138.com,就可以看到我的IP地址是:113.89.234.222,位置在:中国广东深圳市南山区。
《通过IP地址判断访问者的地理位置》
2、关于Cookie
通过IP地址,网站能够知道访问者的地理位置,如果网站还想进一步知道访问者是谁?以前有没有访问过本网站?都访问了哪些内容?为了获得这些进一步的信息, 网站就要用到Cookie技术了。
什么是Cookie?中文翻译过来叫做小饼干。你可以理解为:当打开浏览器访问网站时,网站会让你的浏览器存储一些很简单的数据,并可以控制这些数据的存储时长。 更关键的是,当浏览器再次访问该网站的时候,网站还可以把浏览器存储的数据读取出来——这就很可怕了,这意味着只要Cookie不被清除, 网站完全可以跟踪你的一举一动。
举个简单的例子,当你用浏览器访问网站时,网站会给你生成一个针对你的唯一标识,并把这个标识存储到浏览器的Cookie中;当你再次访问该网站时, 网站从浏览器的Cookie中读取到这个唯一标识,就可以知道你是谁。
Cookie技术的使用非常非常的广泛,以天猫、京东为例,一旦你访问过天猫或者京东,它们就会在Cookie中记录你的相关信息, 当再次访问天猫或者京东时,它们自动知道你是谁,这里用到的就是Cookie技术。
《访问xx网站时留下的Cookie数据》
3、如何隐匿我的信息?
当我们知道网站是通过IP地址和Cookie跟踪到你是谁,那么自然就有相应的规避方案。
IP地址是不可伪造的,但我们可以通过IP代理服务,如Socks5、VPN等等技术隐藏我们本机的IP地址。当采用IP代理服务访问网站时, 网站只能获取到你的代理IP地址而无法知晓你的本地IP地址,自然也就无法知晓你的地理位置 (需要特别指出的是:网站可以通过WebRTC等机制绕过代理IP地址从而获取您真实的IP地址, 更详细的介绍请阅读 《花漾指纹浏览器与常规浏览器的不同》 一文)。针对Cookie数据, 我们可以通过清空浏览器缓存来清理网站留下来的Cookie数据,当Cookie都不存在了,网站自然无法知晓你是谁。 以笔者经常使用的Chrome浏览器为例,如下图所示清理所有的Cookie数据,你再次访问京东、天猫时,它们就要求你重新登录——这意味着它们不知道你是谁了。
《清除Chrome浏览器的Cookie数据》
4、道高一尺,魔高一丈:浏览器指纹
隐藏了IP地址,清理了Cookie数据,是否意味着你的信息就无从可查了呢?各位看官老爷想的太乐观了。随着技术的发展,近些年来, 网站的技术人员开始使用一种称之为“浏览器指纹”的技术来定位并跟踪网站的访问者。
什么是浏览器指纹?一种比较通俗的说法是:当你使用浏览器访问网站时,网站会在你的浏览器中执行一段JavaScript(以下简称JS)脚本, JS脚本能够把当前浏览器以及浏览器所在电脑的相关信息查询出来,并对查询出来的信息进行编码,间接形成一个唯一的标识, 我们把这个唯一的标识称之为浏览器指纹。
听起来似乎有些晦涩,笔者曾经玩过智能音箱“天猫精灵”的一个小游戏“你想我猜”,你在心里想一个人物,天猫精灵会问你一些问题,如:他是男的吗? 他是封建王朝的人物吗?他结过婚吗?等等,当你回答了这些问题后(一般不超过20个问题),天猫精灵就会告诉你,你心里想的那个人物是谁。
浏览器指纹本质上也是如此。一段指纹信息包含的内容可能有:当前浏览器内核是什么版本?浏览器所在主机的分辨率是多少?所在主机安装了什么显卡? 显卡的驱动程序是什么版本?安装了哪些字体?安装了哪些插件?浏览器播放音频的设备有几个?设备编码分别是什么? 也许这些信息看起来就像天猫精灵问你的问题一样,都是通用的、非特定的问题,但当这些问题的答案组合在一起,天猫精灵就可以判断出来你心里想的是谁, 而浏览器的这些信息就可以汇总成判断当前浏览器唯一性的“编码标识“,我们把这个”编码标识“形象的称之为浏览器指纹。
简而言之,即便你通过IP代理服务隐藏了你的本机IP地址,通过清除浏览器Cookie数据隐藏了你的个人信息,但只要你的浏览器和浏览器所在主机没有发生变化, 网站依然可以通过浏览器指纹信息判断出来你是谁。
5、魔高一尺,道高一丈:指纹浏览器
听起来有些可怕?那么有没有办法隐藏或者更换浏览器指纹信息呢?有,这就是笔者想向各位看官老爷介绍的:指纹浏览器。
什么是指纹浏览器?顾名思义,能够通过模仿不同的浏览器指纹,让网站无法判断当前访问者的具体身份。结合前文的介绍, 我们知道一个指纹浏览器应该具备三个基础能力:能够模仿不同的浏览器指纹信息;能够和IP代理服务相结合;能够按照用户的需求进行Cookie数据的迁移或清理。
但显然,我们更应该知道的是:如何判断什么是一个“好”的指纹浏览器。笔者认为,一个“好“的指纹浏览器应该有以下判断标准:
5.1 指纹信息的唯一性
既然称之为“浏览器指纹“,那么指纹信息的唯一性,显然是指纹浏览器的立足之根本。在这一点上,各家的指纹浏览器做的都还不错,以花漾指纹浏览器为例, 其指纹信息大概包含七个大类30多个子项的数据,这些数据的排列组合,完全可以构成一个唯一的不可重复的指纹信息。
《花漾指纹浏览器中的指纹信息详情》
5.2 指纹信息的真实性
仅仅保证指纹信息的唯一性是远远不够的,衡量指纹信息的另一个重要维度是指纹信息的真实性。但遗憾的是, 业界绝大部分厂商仅仅提供了指纹实例的配置及相关可选项,至于指纹信息如何生成则交由用户自行设置,对用户特别是大量对计算机知识较为缺乏的小白用户而言, 这是极为荒谬的。试问,用户如何知晓在不同的操作系统下选择怎样的显卡?如果将某个显卡的驱动程序配置到了一个并不支持的操作系统之上, 这岂非是告诉网站,这个指纹是伪造的?
针对这些问题,花漾在业界首创“采集物理世界的浏览器特征信息以形成指纹模板, 再通过对指纹模板加以嗓音干扰与微调从而裂变成若干枚指纹实例”的创新性做法,确保了每一个指纹实例都是真实且唯一的。
《在花漾中采集浏览器的指纹信息以形成指纹模型》
《在花漾中通过对指纹模型施加噪音与微调从而裂变成若干枚指纹实例》
6、总结
通过本文的阅读,我们了解了所谓浏览器指纹是指网站开发者通过JS脚本把浏览器以及浏览器所在电脑的相关信息查询出来,并对查询出来的信息进行编码, 从而间接形成一个唯一的标识;而指纹浏览器则能够模仿不同的浏览器指纹,让网站无法判断当前访问者的具体身份;而判断一个指纹浏览器是否“优秀”的黄金标准是 “能够确保指纹信息的唯一性与真实性”;花漾指纹浏览器在业界首创“采集物理世界的浏览器特征信息以形成指纹模板, 再通过对指纹模板加以嗓音干扰与微调从而裂变成若干枚指纹实例”的创新性做法,确保满足以上两个黄金标准。