浏览器指纹的实现方案及对比

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/Fabulous1111/article/details/84206426

浏览器指纹指什么?

是一个能够唯一标识当前浏览器的字符串

作用:

网站或者广告联盟都会非常想要一种技术方式可以在网络上精确定位到每一个个体,这样可以通过收集这些个体的数据,通过分析后更加精准的去推送广告(精准化营销)或其他有针对性的一些活动。
举个例子:
某天你在某商城购买了一台笔记本,不就你会发现浏览网页时很多广告都变成了笔记本,这是因为你已经被唯一标识了!

实现方法

1、Cookie

用户访问一个网站时,网站可以在用户当前的浏览器Cookie中永久植入一个含有唯一标示符(UUID)的信息,并通过这个信息将用户所有行为关联起来,以便更好地为访客提供个性化服务。

特点:①:用户可清除,清除后无法唯一标识。②:许多浏览器都有隐身访问模式(即关闭cookie功能)

2、Cookie替代方案——Flash Cookies

FlashCookie是由FlashPlayer控制的客户端共享存储技术:
(1)、类似HTTP Cookie,Flash Cookie利用 SharedObject类实现本地存储信息,SharedObject类用于在用户计算机上读取和存储有限的数据量,共享对象提供永久贮存在用户计算机上的对象之间的实时数据共享;
(2)、本地共享对象是作为一些单独的文件来存储的,它们的文件扩展名为.SOL;
(3)、本地共享对象并不是基于浏览器的,所以普通的用户不容易删除它们。如果要删掉它们的话,首先要知道这些文件所在的具体位置。这使得本地共享对象能够长时间的保留在本地系统上。
特点:比Cookie实现方式好,因为它无法通过浏览器快捷地删除,但比较专业的人士还是能通过本地查找删除:Flash Cookie文件存储在本地文件夹
C:/Documents and Settings/电脑用户/Application Data/Macromedia/Flash Player/#SharedObjects中。

3、帆布指纹识别(使用canvas实现)

通过查询浏览器的代理字符串,屏幕色深,语言,插件安装与支持的 MIME 类型,时区偏移量和其他功能,如本地存储和会话存储等等,然后这些值通过散列函数传递产生指纹,不需要通过 Cookie 存储就可以识别浏览器。
在绘制canvas图片时,同样的canvas绘制代码,不同机器和浏览器绘制的图片特征是相同并且独一无二的,这样以来,提取最简单的md5值便可以唯一标识和跟踪这个用户。
目前已有开源项目实现,如fingerprintjs2,fingerprintjs2 是一个快速的浏览器指纹库,纯 JavaScript 实现,没有依赖关系。默认情况下,使用 Murmur Hash 算法返回一个唯一标识当前浏览器的32位字符串。地址:https://github.com/Valve/fingerprintjs2
(1)引用
支持npm安装或通过script标签引入
(2)举例:
在这里插入图片描述
注:如果options是一样的话,值是一样的,options是浏览器的语言、装了什么插件等信息,传入的东西越多,越精确;假如options传入的是空对象,那么意思是根据当前浏览器所有信息生成指纹。
结果:
在这里插入图片描述
特点:目前暂时没有好的对抗方案,无法屏蔽。

猜你喜欢

转载自blog.csdn.net/Fabulous1111/article/details/84206426