本帖最后由 三分醉 于 2022-1-20 17:34 编辑 : ?3 D& r- @' L/ Q- b8 f* q
! o. y3 Q4 j7 q) L9 e
二、浏览器指纹的检测与对抗的办法指纹浏览器系列教程目录:
2 [* }5 U0 C. r+ b一、指纹浏览器的原理与应用
" B! L; W5 o3 [1 ^' p* k二、浏览器指纹的检测与对抗的办法
% j' q: u- ?5 m7 l/ ]三、更多的检测手段与指纹浏览器选购方案7 k# W; u7 R, V3 F0 Y V6 _7 b
四、命令行形式浏览器多开解决方案: D8 ?5 b' b6 w
五、浏览器插件形式改变指纹
3 `# [6 Z7 q% y" Q9 h六、node.js库Puppeteer改变浏览器指纹信息# ?: j$ v5 X6 E$ U, O' \+ C
七、python改变浏览器指纹信息 L3 J Y; s3 h9 O" z
八、java、go、c#、php、rust更改浏览器指纹信息( P0 c& m* ^2 Z% z+ y ]* j9 W& }# E5 N
九、编写自己的指纹浏览器以及指纹信息来源
3 T6 y' ?) |8 w9 w* l$ V/ S3 S十、闲话聊一聊指纹浏览器的用途 浏览器指纹的检测上一篇关于指纹浏览器原理里我们说网站检测访客的浏览器设备信息,如果基础的那就是检测UA和IP,如果要获得更多信息即访客浏览器指纹,这时候就需要JavaScript的帮助了。4 F6 w5 ?. p5 F" L* J4 O" ^
现在推荐一个很厉害的脚本,就是https://github.com/fingerprintjs/fingerprintjs ,它是GitHub上有名的开源浏览器指纹获取脚本,在线检测的demo地址为https://fingerprintjs.github.io/fingerprintjs/ ,检测结果:+ t5 y8 N' Y" U f8 r, ~
: q& O4 P4 M& b, u) E
第一行就是用户的浏览器指纹id了,这种东西是每个脚本都有一个算法,浏览器指纹本身没有定义是什么格式,你自己定义为纯数字或者纯字母都可以,它只是根据访客浏览器的信息计算出来的一个值(每个在线检测浏览器指纹的网站都是不同的算法,得到的值也不同)。
% I2 X( ?$ r8 U0 `6 Q$ j `- P" b大部分的指纹检测网站检测如下内容: - Useragent
- cpu核心
- 内存大小
- 屏幕大小
- 浏览器语言
- 色深
- WebGL
- Vendor
- Canvas
- Audio
- Fonts
- Timezone' j: H! Y; k, K3 g5 h
( i& r+ E) O- D# ]( W$ r# D
6 u& c" F' c/ z8 t4 g& a s6 \
当你打开浏览器隐身模式后,再次访问这个网址,你会发现这两个值是一样的,这说明浏览器指纹依然是当前这个浏览器的指纹。而你换本机上其他的浏览器访问会发现它变了,这就是前面说的,多安装几个浏览器就能解决浏览器指纹变换问题。 浏览器无法获得mac地址这里再提一下,网站并不能通过浏览器获取到你的网卡mac地址,也不能获取到你路由器的mac地址。有网友做emu的,那种安装电脑程序或者手机app的理论上的确是可以获取到这些硬件信息,但是浏览器本身并不会给网站提供这些硬件信息,尤其当前在国外谈隐私色变,以后浏览器获取到的权限可能会少。 一个小故事曾经听过一个做emu的网友说自己的经历,联盟经理说他们是通过购买的0day查到这个推广者是emu作弊,那么这种情况要么就是联盟am在炸你,要么就是你做的offer是安装类的,根本不需要0day。一个联盟会购买0day来检测推广者是否作弊,这种行为我认为不可能发生。
! C" D/ Z( l8 t3 J2 s下一篇文章会把在线提供指纹检测的网站弄个列表,方便大家选用。 对抗浏览器指纹获取的简便方法有朋友会说,那我每天登录上百个号,不能安装上百个不同的浏览器啊!
% v. E: Q9 j! {5 v& x* x% J" q. l的确,这样太折腾了,前面我们看到fingerprintjs这个库是通过获取的所有信息进行测算出来指纹id的值,那么我们但凡更改浏览器的一个设备信息,整个值都会变,那么问题就变的简单了。' l& D) A+ ~# p* b) Q
网站是通过JavaScript在浏览器里运行,而获取到浏览器的设备信息,那么我们就有三种应对办法了。 第一种:预加载JavaScript脚本在网站访问浏览器之前,预先在浏览器里加载应对检测的JavaScript脚本,让网站的JavaScript脚本检测到的是我们自己JavaScript脚本返回给它的,此种方法能解决绝大部分的指纹检测。
% M# a( @) ?* j8 ?; b+ E. e/ \实际应用有,各种浏览器插件,编程语言调用浏览器时加载JavaScript代码等方法。
- N! Z. g! C# }+ y" W d也有些指纹浏览器也是如此方式来应对网站对浏览器指纹的检测。
2 t7 Q; ]6 O6 F h9 \) m* l) Z此种方法好处是简单,只要安装浏览器插件,或者编程的时候加载js代码就可以,非常简单。( D' n, L& }1 b1 q9 P) [
坏处就是它不是真的更改了浏览器的硬件信息,而只是应对了网站的检测,当你自己的JavaScript代码加载失效或网站检测的信息不是你的JS代码所涵盖的,那么就暴露了。8 H1 K/ V9 d3 V: s! T8 f o
第二种:对浏览器进行重新改写编译例如开源的chromium浏览器和Firefox浏览器,这也是很多指纹浏览器服务商的方法,通过更改浏览器底层的设备信息,从固定值变为可以传参,这样来达到不同浏览器实例,展示不同的设备信息。 第三种:针对检测单独伪造返回值网站对用户的浏览器信息进行检测大部分都不是主域名或者是由第三方提供的,那么你可以找到它,对它进行单独伪造请求,从而保证每个访问都是不同的浏览器指纹信息。 结语对于我们普通人来说,第一种和第二种都是很好的选择,第一种几乎可以不花钱,去浏览器插件里搜索fingerprint有很多浏览器插件可以用,系列文章我也会分享各个编程语言对于随机浏览器指纹的脚本代码。
0 b" f, [5 K9 d" R% T第二种市面上成熟的浏览器指纹商家有很多,曾经一家独大的时代已经过去了,现在可以免费试用的有很多,甚至是完全免费的,大家根据需要和口碑进行选择即可。并且我会在后续文章讲解下如何自己重新编译浏览器。 本文由三分醉博客原创,转载请注明:https://www.sanfenzui.com/anti-fingerprint-browser-detection-and-countermeasures.html " Y, g; K( [# n2 f3 f
|