AliExpress运行静默WebAudio指纹识别,导致蓝牙多点连接中断

Hacker News Top 新闻

摘要

AliExpress使用隐藏的WebAudio指纹识别以增强浏览器安全性,但无意中通过保持音频上下文活跃而破坏了蓝牙多点连接功能,这一问题通过技术分析被揭露。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/08/20 13:14

# 速卖通网页利用 WebAudio 指纹识别技术保持多点蓝牙耳机连接状态 来源:https://blog.laserphile.com/2026/08/aliexpress-webpage-keeping-multipoint.html 最近我遇到了一个关于蓝牙耳机的奇怪问题。我的耳机支持多点蓝牙音频功能,可以同时连接电脑和手机。通常情况下,电脑会优先播放音频,只有在电脑没有播放内容时,手机才能播放音频。平时我习惯在手机上听音乐,但通知和 YouTube 等内容通过电脑播放,这个模式一直很稳定,直到我在 Firefox 或 Chrome 浏览器(未测试其他浏览器)中打开速卖通网页。速卖通主页加载后不久,手机的音频就会停止播放。关闭速卖通标签页立即恢复正常。静音该标签页/Firefox/Windows 均无效,且页面上没有可见的视频、音乐或其他媒体内容。这引起了我的怀疑并决定一探究竟。 ## 寻找隐藏媒体 我的第一反应是可能存在自动播放的产品视频或广告,因此我检查了常规目标: - `<audio>` 和 `<video>` 元素 - 对 `HTMLMediaElement.play()` 的调用 - 活跃的 Media Session 元数据 - 媒体请求 - 包含媒体的嵌入式框架 这些检查均未发现有效线索。页面上没有音频或视频元素,没有媒体播放调用,且 `navigator.mediaSession.playbackState` 保持为 `none`。一个重要线索是问题并非立即出现,而是在页面空闲数秒后才发生。我在页面加载前进行了代码注入,不仅观察传统媒体元素,还监控了 Web Audio API。基本思路是包装 `AudioContext` 构造函数,并在页面创建音频处理上下文时进行记录: ```javascript 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()` 调用 - 无活跃的 Media Session - 无声音输出 构造函数堆栈追踪指向两个脚本: > 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 测试只是这些脚本中的测量项之一。检查代码包发现以下查询或测量代码: - canvas 渲染和 `toDataURL()` - WebGL 渲染器信息、扩展及着色器精度 - 音频振荡器和分析器输出 - 屏幕和视口尺寸 - 设备像素比 - 硬件并发数和设备内存 - 已安装的浏览器插件 - 支持的音频和视频格式 - WebRTC 行为 - 浏览器性能计时 - 鼠标、触摸、焦点和滚动事件 - 设备运动和方向 - 常见于浏览器自动化的属性 还有用于序列化和加密结果、向阿里巴巴遥测服务发起请求、以及使用 `fetch()` 或 `sendBeacon()` 发送数据的代码。这构成了相当全面的浏览器和设备指纹。音频指纹识别之所以有效,是因为浏览器版本、操作系统、音频库和硬件的细微差异会导致相同生成信号产生略微不同的结果。虽然它本身不一定足以唯一识别设备,但当与 canvas、Web硬件、计时和交互数据结合时,其效用大大增强。我无法得知速卖通服务器收到数据后的具体用途。它可能用作持久性设备标识符,也可能是欺诈或机器人检测评分的输入之一。 ## 速卖通为何需要这个 速卖通有充分理由区分正常购物者与自动化或可疑客户端,同时追踪用户浏览习惯。该网站需要处理账户被盗、虚假账户、数据爬取、自动化购买、支付欺诈、评论操纵以及优惠券/新客促销滥用等问题。与大多数大型企业一样,他们也利用大规模用户行为数据集来更好地进行产品和服务营销。由于可能被清除、复制或替换,Cookies 对此目的并不特别可靠。基于众多独立浏览器测量构建的指纹更难以被一致篡改。交互数据还有助于判断浏览器是被人还是自动化工具控制。从速卖通角度看,这可以减少欺诈,并允许可信客户在不需要每几页就显示验证码的情况下继续浏览。(当然,速卖通并不排斥使用其 AI 生成的验证码)个人而言,我不希望购物主页默默地调用我的图形、音频、WebRTC、硬件和运动等 API 来追踪我的行为,尤其是当它产生诸如阻止我听音乐这样烦人的副作用时。*或许如果速卖通没有阻止我听音乐,我永远不会去研究这个网站在做什么。* ## 使用 uBlock Origin 进行屏蔽 我测试了屏蔽这两个已识别的脚本家族。屏蔽这两个请求后,速卖通主页继续正常渲染,在控制抓取期间未出现 `AudioContext` 对象或目的地连接。在 Firefox 中,我使用 Raymond Hill 开发的官方 uBlock Origin 扩展。要屏蔽这些脚本,请打开 uBlock 控制面板,选择“我的过滤规则”,然后添加: ``` ! 速卖通 AWSC 指纹识别脚本 ||assets.aliexpress-media.com/g/AWSC/uab/*/collina.js$script,domain=aliexpress.com ||assets.aliexpress-media.com/g/AWSC/fireyejs/*/fireyejs.js$script,domain=aliexpress.com ``` 点击“应用更改”,关闭所有已打开的速卖通标签页,然后重新打开网站。必须关闭现有标签页,因为屏蔽脚本不会关闭其已创建的音频上下文。这些规则故意设置得较窄。它们仅屏蔽观察到的两个脚本家族,并且仅在速卖通请求时生效。我不会惊讶于未来这可能失效,到时再应对。由于这些脚本似乎与反欺诈系统关联,屏蔽它们可能导致更多验证码或在登录/结账时出现问题。目前主页和普通商品浏览仍正常工作,但如果速卖通拒绝合法登录或支付,我会暂时禁用这些规则。 ## 我为何屏蔽它 反欺诈用例是可以理解的,但此实现存在几个问题。它在执行敏感操作前就在通用购物主页上运行。它收集广泛的设备和行为测量数据,实现刻意难以检查,且页面启动实时音频处理图时没有可见指示。它还产生了非常真实的硬件副作用。一个静默的指纹测试能够干扰蓝牙多点切换,而浏览器的静音控制对此无能为力。如果一个隐藏的分析或安全功能能够如此强烈地占用音频路径以至于改变外部硬件的行为,屏蔽它似乎是合理的权衡。我也无法证明速卖通保存指纹的时间长度或是否在其他阿里巴巴服务中使用。客户端代码证明收集并传输了广泛的类指纹测量数据,但服务器端的保留和身份关联无法从浏览器中看到。*你真的能相信任何人会将你的最大利益放在心上吗?* ## 总结 速卖通主页通过高度混淆的阿里巴巴安全脚本,静默创建了两个运行中的 WebAudio 图。这些图生成并分析波形,作为更大范围浏览器指纹识别的一部分,然后通过零增益节点连接到系统音频输出端,防止用户听到任何声音。在我的配置中,这似乎使电脑的蓝牙音频路径保持激活状态,阻止多点耳机切换回手机。静音标签页无效,因为没有传统的媒体元素可供静音。使用上述两条 uBlock Origin 规则屏蔽 `collina.js` 和 `fireyejs.js`,可以防止创建隐藏的音频上下文,从而让我能在浏览速卖通时愉快地继续听音乐而不受干扰。

相似文章

苹果修复 Beats Studio Buds 中严重窃听漏洞

Ars Technica

苹果已修复 Beats Studio Buds 中一个严重窃听漏洞(编号 CVE-2025-20701),攻击者可能借此监听音频。该漏洞由安全公司 Sentinel One 发现,属于更广泛的蓝牙漏洞的一部分。

语音AI系统易受隐藏音频攻击

Hacker News Top

新研究表明,不易察觉的音频信号能以79-96%的成功率劫持大型音频语言模型(LALMs),迫使其执行未经授权的命令,如网络搜索或发送电子邮件。这种被称为AudioHijack的技术针对生成式模型,无论用户输入如何都能生效,对语音AI系统构成严重安全风险。