admin管理员组

文章数量:1585963

    JS获取浏览器的指纹,个人总结如下几个方案

1、Canvas:用Canvas画一张10X10像素的图片,随便找几个位置加写黑点。把这张图片转成base64字符串,用360浏览器和谷歌浏览器得到的结果,是不一样的,2台不同电脑的360浏览器结果也不一样。我自己想,应该是生成一张图片,关系到浏览器,主板,显卡,cpu都有参与,所以稍微有点不一致,base64的结果就会有出入。

2、Plugins:获取浏览器的navigator.plugins(浏览器插件)

3、UserAgent:最典型的UA

4、Audio:和canvas类似,把一段音频转成base64,不同环境会有差异

5、Font:通过获取你本地电脑所有的字体,来生成一段指纹。但是js哪有读取字体的功能呢,这个就比较妖了。首先先把全世界的所有字体名字都找出来(假设有100个),然后定义100个span,每个span一个字体,然后再获取这些span的宽度,如果这些字体存在,那么和不存在的字体,宽度是不一样的,比如m、l这种字母,不同字体的宽度是不同的。这是css字体。还有canvas字体,逻辑也是类似,用canvas创建一个字符串,然后定义不同字体获取宽度。

6、Rect:定义一块区域,让这块区域是斜的,然后求这块区域的坐标和宽高。因为这个可以精确到小数点好多位,所以不同环境下的结果也会稍有不同。

7、WebGl:和canvans类似,也是画图,看base64结果

8、WebRtc:这个其实不是浏览器指纹,但是用他的目的是和指纹一样,为了识别客户端的唯一新。这东西能获取到你的真实IP(就是你挂了代理,也能获取得到)。我一开始觉得这太牛逼了吧,细研究发现原理其实很简单,这东西用了一个新的协议stun,代理代的是http协议,所以自然和stun协议不挨着,stun协议在谷歌控制台里也没显示,所以很容易忽略。

现在有很多指纹浏览器,通过对chrome的二次开发,实现指纹重写。但是感觉太重了,完全可以用纯js来实现这个东西

通过几天的学习,做了一个浏览器插件(其实就是纯js代码),来实现指纹重写

功能其实比较简单(我也没想出啥什么牛逼功能,有需要的可以留言,好建议就改)
1,创建环境,设置要重写哪些项目
2,查看当前网站是否用了指纹检测,注意,这个检测只是参考,因为网站可能就用了这个功能,所以要自己去识别
3,清空cookie。这个虽然可指纹没啥关系,但是实际应该有用,如果cookie不换,只改了指纹,这不还是一个人
4,获取本机ip,这个只是为了验证webrtc可以在代理情况下获取本机ip

本文标签: 重写指纹浏览器代码Rect