抖音技术学院之浏览器指纹识别技术

AffettoIris 2023-11-17 2,525 11/17

 

浏览器指纹识别技术

原作者

 

先申明为什么这篇文章不分类为javascript栏,而是网安之工具栏:如果存在某种攻击是基于访问网页的,例如爬虫频繁盗取我站资源,即使对方每爬一次就换IP(快代理),我们可以用浏览器指纹识别技术识别出还是这个人,就拒绝提供服务。

基于这个世界上很难出现两个完全一样的浏览器环境(包括电脑的IP地址和OS、可被浏览器执行的js的全套api例如canvas画图函数、浏览器厂家及版本号)。以canvas绘图为例,哪怕一样的输入一样的代码,在同一电脑上仅浏览器不同,画出的图形都有细微差异。有个公司做过实验,只基于canvas画图来进行指纹识别,8万个浏览器样本里只有66个样本是相同指纹,如果再去结合其他指纹,那么唯一性将更大地上升。

优点:网站不必让用户登录就能知道两次登录是否为同一个用户,即使用户开了无痕窗口。

缺点:侵犯用户隐私。但大公司仍在使用,我行我素。

原理:以canvas绘图为例,我们下述代码能绘制一个图形,再把最终成品图像导出成一个base64,再把base64变成一个hash值例如-1066493064。

抖音技术学院之浏览器指纹识别技术

该用户同一时刻用同一个浏览器的无痕窗口和普通窗口执行上述代码,得到的都是一样的hash值即-1066493064,但如果使用了其他浏览器却得到了-1371135138。为什么图像会不一样?:因为不同的OS的底层对同一个API的实现不一样,(就好像让几个人都画一个半径为2cm的圆,他的圆左边翘一点,她的圆右边瘪一点)、加上不同的浏览器对API的实现也不一样,alert()的表现形式就是个例子、不同的图像引擎、ip,这些都会导致图像的色值、文字的大小等有些许变化,而hash函数能对微小变化的输入产生截然不同的输出。

浏览器指纹识别技术的应用:

  1. 提供定制化广告。你在淘宝喜欢逛球拍,淘宝把你喜欢球拍和你的指纹做了绑定并把数据在圈内共享,圈内的天猫也有了你的数据,你访问天猫,天猫就自动推送球拍给你。

  2. 防刷:包括但不限于防刷票、注册多个小号去薅羊毛。因为有的刷票行为是用注册机不断地切换用户去刷票,但刷票机的环境没变呀,即浏览器指纹没变。

  3. 网安领域:如果存在某种攻击是基于访问网页的,例如爬虫频繁盗取我站资源,即使对方每爬一次就换IP(快代理),我们可以用此技术识别出还是这个人,就拒绝提供服务。

反浏览器指纹识别技术:

指纹浏览器诞生了。它可以通过一些设置不断地切换浏览器指纹。How 实现的?:它针对浏览器指纹识别技术要读取的内容而去改动这些内容,比如canvas画图时,你传入的是向左128px距离,它给你绘制成向左129px距离。老师说还没见过免费的指纹浏览器,毕竟用的人都是黑产嘛,收点费正常。

fingerprintjs - 浏览器指纹识别库,这个库帮助程序员拿到用户的浏览器指纹。

- THE END -

AffettoIris

11月24日19:47

最后修改:2023年11月24日
0

共有 0 条评论