如题,近期需求对匿名用户进行追踪,需要对身份进行唯一标记,前天发帖询问短哈希后楼内老哥提到可以使用 canvas 指纹代表用户。我搜索相关内容后如同打开了新世界的大门,头一次知道还有这种标记用户身份的方法。进而搜索得知音频设备也可以用来生成指纹,但是百度博客相关文章提到音频可能导致指纹不稳定(同设备多次执行结果不同),原文地址:https://blog.csdn.net/cen_cs/article/details/106341724
我复现过程中未遇到此问题,想请问有无论坛老哥遇到过类似问题,或者这个不稳定问题纯粹是写这篇博客的老哥乱扯的?
======
另外问一下有关 js 写法,查到的音频指纹生成代码的伪代码类似下述
var AudioCOntext= ... // 链接音频设备 var cOntext= new AudioContext(...) // 生成一段音频 ... // 配置音频内容 context.Oncomplete= function (event) { ... console.log(fingerprint) // 在音频生成完毕后触发回调,计算并输出音频指纹 }
考虑到使用中为了便捷调用,理想的情况希望将整个功能写在同一个函数里,即
let get_audio_fingerprint = () => {...}; let device_fingerprint = get_canvas_fingerprint() + get_audio_fingerprint(); // 类似这种调用方法
但是如上述伪代码中指纹生成是在回调函数里完成的,应该怎么把这个回调函数的结果返回给外层呢?试了试 promise ,但是得到浏览器提示说内层不允许调用 promise
1 rming 2022-03-06 10:05:19 +08:00 via iPhone 浏览器隐私模式就没了,不可靠 |
2 supermoonie 2022-03-06 10:08:44 +08:00 看下这两个链接吧,一个是生成浏览器指纹的库,一个是跨浏览器指纹技术的论文 https://fingerprintjs.com/ http://yinzhicao.org/TrackingFree/crossbrowsertracking_NDSS17.pdf |
3 0o0O0o0O0o 2022-03-06 10:10:11 +08:00 |
![]() | 4 LeeReamond OP @rming 有些需求是例如反爬虫,需要提高指纹的抗伪造性能,有些只是需要标记合法的唯一用户以追踪他们的行为,伪造用户的行为只是单纯污染数据库,在我的需求下影响不是很大,只是我不希望正常用户的指纹是不稳定的,今天被认为是一个人,明天被认为是另外一个人,这样会造成行为逻辑中断 |
5 0o0O0o0O0o 2022-03-06 10:11:10 +08:00 ![]() |
6 supermoonie 2022-03-06 10:11:38 +08:00 @0o0O0o0O0o 哈哈哈 有意思了 |
![]() | 7 kingjpa 2022-03-06 10:12:19 +08:00 既然匿名,没有鉴权机制本身就不可靠, 同一设备不同浏览器 得出的结果都不是唯一的。 大部分都是 ,用画布 屏幕尺寸像素 地理位置 内置字体 header 头 多个维度组合,然后生成一个总分, 然后每次请求判断,越接近这个总分越有可能是同一用户 。 这种往往是用在统计分析 这种对精确度没那么高的场景下,要是代替登录关联业务 那就不好使了 |
8 rming 2022-03-06 10:21:50 +08:00 via iPhone @LeeReamond 之前曾经作为 uuid 踩过坑,重复问题比较严重,好像也是一堆参数的 hash ,会重复的,建议看看原理。 ff 浏览器有隐私开关,chrome 也有插件,反指纹难度不高,我就放弃了。 有些可能不准确,2 年前用过,记不清了 |
![]() | 9 Maboroshii 2022-03-06 10:40:51 +08:00 via Android 别人都隐私模式了 还能吃你投放的内容吗。。 |
![]() | 10 Soar360 2022-03-06 11:12:00 +08:00 这种,主要还是为了反爬吧…… |
![]() | 11 krapnik 2022-03-06 11:23:15 +08:00 |
![]() | &nbs; 12 LeeReamond OP @krapnik 很有趣,但是文档写的不是很清楚。demo 页面我访问了没看明白他生成的指纹是指啥。。 |