关于 js 获取浏览器指纹

2019-03-17 08:43:02 +08:00
 nanaw

RT,偶然看到一文讲 js 获取浏览器指纹的。 本人对前端一窍不通,但猜想 js 要获取这些信息总要通过调用函数 /接口 /方法吧。。 而现在网站严重依赖 js 也不能禁用,那为什么没有相关的扩展 /脚本 /浏览器机制 来 hook 相关的方法 /函数从而保护信息呢。。

4700 次点击
所在节点    问与答
14 条回复
IsaacYoung
2019-03-17 09:02:13 +08:00
Proxy
gamexg
2019-03-17 09:06:41 +08:00
搞过,扩展级别的能够 hook 掉对应的函数或伪造结果。
但是,伪造的数据类型和系统数据类型并不一致,专门检查的话反而更明显。字体也只能增加伪造字体并不能减少字体。

听说 Tor Browser 浏览器有防跟踪功能,但是没研究过。
qiayue
2019-03-17 09:16:50 +08:00
其实没那么神奇,重复率很高,并不能够准确识别同一台设备
nanaw
2019-03-17 09:35:29 +08:00
@gamexg 这就有一种蛋生鸡鸡生蛋的感觉了。既然可以通过 hook 完全蒙蔽 js 获取的信息,那么又如何被检查到的呢,。。
(如系统类型,版本,浏览器窗口大小,分辨率,时区,ua 这些信息)
gamexg
2019-03-17 09:49:12 +08:00
@nanaw #4 非前端,而且这个也很长时间了,记不太清。
大概问题是 js 系统函数返回的数据类型并不是普通 Object,而是根据函数不同返回不同的类。

有些返回的类型应该是内置类,无法直接创建这种类的对象。有些可以直接使用系统函数返回的对象做修改后在返回给用户,但是有些无法修改,即使 defineProperties 函数也无法修改。那么只能返回自己创建的 Object 对象了,专门检查这个就能够发现在伪造指纹。

我是非前端,当时看过原型链等 js 类型系统,还是没能解决这个问题。也许专业前端能够搞定这个。

另外印象还有很多地方存在这种问题,例如字体,字体增加其实是用现存字体创建一个别名,对比的话能够发现这个问题。
loading
2019-03-17 09:50:40 +08:00
浏览器指纹是做风控用的,当然,这是风控的一个非常小的一个要素而已。
其他都没啥用。
plqws
2019-03-17 09:53:40 +08:00
真正的指纹不存在的,浏览器本来就是个沙箱环境,同版本操作系统+同版本浏览器+同外网 IP,基本没有任何区别。
daquandiao2
2019-03-17 10:15:08 +08:00
@plqws 有的 js 指纹会计算 webGL 的绘制时间,所以不同 GPU 的处理性能也是一个考量
nanaw
2019-03-17 10:19:36 +08:00
@loading
@plqws 即使这些信息已经很多了,再加上分辨率,窗口,,等一些其他的东西,配合同外网 IP 已经足以锁定追踪用户了。
nanaw
2019-03-17 10:25:12 +08:00
@gamexg 大概就是说 js 可以通过主动探测来发现 hook 么。。。可这种一来应该可以“被适配”,检测和反检测之间相互攻防。
二来既然如此不考虑被检测到那 js 可以被 hook 然而没有找到这样的插件啊。。。只想隐藏自己的浏览器的一些信息而不考虑被发现 hook 的情况下
nanaw
2019-03-17 10:28:15 +08:00
@daquandiao2 可是这样能保证同一台机器每次计算时所花费的时间 /性能完全相同不变吗?
据我所知跑分每次结果还不一样呢。。就算可以,那有没有什么办法来“干扰”下,这个值变得随机化也就意义不大了吧。。
tairan2006
2019-03-17 12:47:57 +08:00
fingerprintjs2
thelderfrog
2019-03-17 16:49:26 +08:00
@nanaw webGL 至少在 Chrome 上是可以直接获取 GPU 型号的
udev
2019-03-17 17:23:02 +08:00
我们就做人机识别,严格得说一切可以 Hook 的变量,都可以伪造。只不过普通大众不会或者没意识,所以指纹对于大部分场景还是有效果的,采集信息的维度也会比上面罗列的多,不断对抗的过程。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/545387

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX