返回

文章详情

阿里巴巴速卖通运行静默的 WebAudio 指纹识别,破坏蓝牙多点连接

Hacker News2026年8月20日 10:08

最近,我遇到了一个奇怪的问题,关于我的蓝牙耳机。它们支持多点蓝牙音频,因此可以同时连接到我的 PC 和手机。通常情况下,PC 在播放音频时优先级较高,当 PC 上没有播放内容时,手机可以播放音频。通常我在手机上听音乐,但当 PC 上有通知或 YouTube 播放时,这种情况是可靠的,直到我在 Firefox 或 Chrome 中打开速卖通页面(其他浏览器未测试)。在加载速卖通主页后不久,我手机上的音频就会停止播放。关闭速卖通标签页立即解决了这个问题。静音标签页/Firefox/Windows 并没有帮助,而且页面上没有可见的视频、音乐或其他媒体在播放。这似乎足够可疑,值得调查。 寻找隐藏媒体 我首先想到的是一个自动播放的产品视频或广告,所以我检查了通常的嫌疑犯:<audio> 和 <video> 元素、调用 HTMLMediaElement.play() 的活动、媒体会话元数据、媒体请求、包含媒体的嵌入框。没有一个显示了任何有用的信息。没有音频或视频元素,没有媒体播放调用,navigator.mediaSession.playbackState 仍然是 none。一个线索是问题并不立即开始。它是在页面保持空闲几秒钟后出现的。我在加载页面之前对其进行了仪器化,并观察了 Web Audio API,而不仅仅是寻找常规的媒体元素。基本思想是包装 AudioContext 构造函数,并记录每当页面创建音频处理上下文时的情况: const OriginalAudioContext = window.AudioContext; window.AudioContext = class extends OriginalAudioContext { constructor(...args) { super(...args); console.log("AudioContext created", { state: this.state, stack: new Error().stack }); } }; 我还包装了 AudioNode.prototype.connect() 以便查看是否有什么连接到上下文的音频目标。最终发现了两个隐藏的音频上下文!在速卖通主页的空闲捕获期间,页面创建了两个 AudioContext 对象。两个都进入了运行状态,并且都连接了节点到 AudioContext.destination。同时仍然是:零 <audio> 或 <video> 元素,零媒体 play() 调用,没有活动的媒体会话,没有可听音频。构造函数的堆栈跟踪指向两个脚本: https://assets.aliexpress-media.com/g/AWSC/uab/1.140.0/collina.js https://assets.aliexpress-media.com/g/AWSC/fireyejs/1.231.67/fireyejs.js 第一个上下文是由 collina.js 创建的,而第二个来自 fireyejs.js。两个脚本都在 AWSC 目录下,看起来是阿里巴巴的浏览器安全性和反滥用工具的一部分。这些脚本极其混淆,但仍然有足够的名称和操作以供 AI 理解音频代码的作用。 音频代码的作用 这两个脚本构建了一个类似于以下的 WebAudio 图: 锯齿波振荡器 -> AnalyserNode -> ScriptProcessorNode -> 设置为零的 GainNode -> AudioContext.destination 振荡器生成一个已知的波形。分析器测量结果,然后经过浏览器的音频实现,脚本从中读取频率数据。增益设置为零,因此用户不应该听到任何声音。然而,图仍然与系统音频目标相连。将其连接到目标使浏览器主动处理该图形,尽管最终音量为零。这与自动播放的视频非常不同。没有媒体元素可供浏览器的正常标签静音控制停止。就页面而言,它正在执行实时音频处理。在我的案例中,这似乎足以让 Firefox 或 Windows 保持蓝牙音频路径激活,阻止我的多点耳机干净地切换回手机。 这看起来像指纹识别 WebAudio 测试并不是这些脚本中的唯一测量。对捆绑包的检查发现了查询或测量的代码: 画布渲染和 toDataURL()、WebGL 渲染器信息、扩展和着色器精度、音频振荡器和分析器输出、屏幕和视口尺寸、设备像素比、硬件并发和设备内存、安装的浏览器插件、支持的音频和视频格式、WebRTC 行为、浏览器性能定时、鼠标、触摸、聚焦和滚动事件、与浏览器自动化常常相关的设备运动和方向属性。 还有代码用于序列化和加密结果,向阿里巴巴的遥测服务发送请求,并使用 fetch() 或 sendBeacon() 发送数据。这是一个相当全面的浏览器和设备指纹。音频指纹识别有效,因为浏览器版本、操作系统、音频库和硬件之间的细微差异可以产生相同生成信号的略微不同结果。它单独并不一定足够唯一识别设备,但当与其他信息组合时,它变得更加有用。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡