2026年8月20日星期四最近我的蓝牙耳机出了个怪问题。这耳机支持多点蓝牙音频能同时连电脑和手机正常是电脑播音频优先没播时手机才播。平时我用手机听音乐电脑有通知声或播 YouTube 视频都正常。但在 Firefox 或 Chrome 浏览器打开速卖通页面后问题就来了。加载速卖通首页不久手机音频播放就停了。关闭速卖通标签页问题马上解决可把标签页、Firefox 浏览器或 Windows 系统静音都没用页面上也没可见的视频、音乐等媒体播放。这现象很可疑值得深入探究。寻找隐藏媒体我先怀疑是自动播放的产品视频或广告就检查了常见情况audio 和 video 元素对 HTMLMediaElement.play() 的调用活跃的媒体会话元数据媒体请求包含媒体的嵌入式框架。但都没发现有用线索。页面没音频或视频元素没媒体播放调用navigator.mediaSession.playbackState 仍显示无播放状态。有个线索是问题在页面闲置几秒后才出现。于是我加载页面之前监测不再只关注传统媒体元素而是观察 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.jshttps://assets.aliexpress-media.com/g/AWSC/fireyejs/1.231.67/fireyejs.js第一个上下文由 collina.js 创建第二个来自 fireyejs.js。这两个脚本都在 AWSC 目录下像是阿里巴巴浏览器安全和反滥用工具的一部分。这些脚本高度混淆但有足够信息让 AI 分析音频代码功能。音频代码的作用这两个脚本构建的 WebAudio 图形类似如下锯齿波振荡器- 分析器节点- 脚本处理器节点- 增益设置为零的增益节点- 音频上下文输出端振荡器生成已知波形分析器测量波形经浏览器音频实现后的结果脚本读取频率数据。增益为零用户听不到声音但图形仍连接到系统音频输出端。即便最终音量为零连接到输出端也会让浏览器主动处理图形。这和自动播放视频不同浏览器常规标签页静音控制没有可停止的媒体元素。就页面而言它在进行实时音频处理。在我这情况这似乎让 Firefox 或 Windows 系统保持蓝牙音频通道活跃阻止多点耳机切回手机。这似乎是指纹识别WebAudio 测试不是脚本里唯一的测量手段。检查脚本包发现其中有查询或测量以下内容的代码画布渲染和 toDataURL()WebGL 渲染器信息、扩展和着色器精度音频振荡器和分析器输出屏幕和视口尺寸设备像素比硬件并发能力和设备内存已安装的浏览器插件支持的音频和视频格式WebRTC 行为浏览器性能计时鼠标、触摸、焦点和滚动事件设备运动和方向与浏览器自动化相关的常见属性。此外还有序列化和加密结果、向阿里巴巴遥测服务发请求以及用 fetch() 或 sendBeacon() 发送数据的代码。这是个全面的浏览器和设备指纹。音频指纹识别可行是因为浏览器版本、操作系统、音频库和硬件细微差异会让相同生成信号产生不同结果。虽仅凭音频指纹可能不足以唯一识别设备但和画布、WebGL、硬件、计时和交互数据结合就很有用。我不清楚速卖通拿到数据后怎么处理。这些数据可能用作持久设备标识符也可能作为欺诈或机器人检测评分输入。速卖通为何需要这样做速卖通有理由区分正常购物者和自动化或可疑客户端同时跟踪用户浏览习惯。网站要应对账户被盗用、虚假账户、数据抓取、自动化购买、支付欺诈、评论操纵以及优惠券或新用户促销滥用等问题。和多数大型企业一样他们也利用大量用户行为数据集推广产品和服务。因为 Cookie 能被清除、复制或替换对上述目的来说不太可靠。而由许多独立浏览器测量值组成的指纹更难被一致操纵。交互数据还能帮助确定浏览器是人控制还是自动化程序控制。从速卖通角度看这能减少欺诈行为让可信客户不用每隔几页就输验证码。不过速卖通也不排斥用其 AI 生成的验证码。就我个人而言我不想购物首页在我不知情时调用图形、音频、WebRTC、硬件和运动 API 跟踪我行为尤其是它还阻止我播放音乐这么烦人。也许没这影响我永远不会探究网站在干啥。使用 uBlock Origin 进行拦截我测试拦截这两个已识别的脚本系列。当两个请求都被拦截速卖通首页能正常渲染监测时没出现 AudioContext 对象或与输出端的连接。在 Firefox 浏览器我用了 Raymond Hill 开发的官方 uBlock Origin 扩展。要拦截这些脚本打开 uBlock 仪表盘选“我的过滤器”添加以下规则! 速卖通 AWSC 指纹识别脚本||assets.aliexpress-media.com/g/AWSC/uab/*/collina.js$script,domainaliexpress.com||assets.aliexpress-media.com/g/AWSC/fireyejs/*/fireyejs.js$script,domainaliexpress.com点击“应用更改”关闭所有现有的速卖通标签页再重新打开网站。关闭现有标签页是因为拦截脚本不会关闭已创建的音频上下文。这些规则范围精心设置只拦截观察到的两个脚本系列且只在速卖通请求时生效。我不惊讶这些规则未来可能失效到时候再解决。因为这些脚本和反欺诈系统有关拦截它们可能导致登录或结账时出现额外验证码或问题。目前首页和普通商品浏览正常但如果速卖通拒绝合法登录或支付我会暂时禁用这些规则。我为何要拦截这些脚本虽然反欺诈用途能理解但这种实现方式有问题。它在我进行敏感操作前就在通用购物首页运行。它收集广泛设备和行为测量数据实现方式让人难检查页面开始实时音频处理图形时没可见提示。此外它还有实际硬件副作用。无声指纹测试能干扰蓝牙多点切换浏览器静音控制却没用如果隐藏的分析或安全功能能强力占用音频通道改变外部硬件行为拦截它似乎合理。我也无法证明速卖通会保存指纹数据多久或是否会在其他阿里巴巴旗下网站用这些数据。客户端代码显示大量类似指纹的测量数据被收集和传输可从浏览器端看不到服务器端数据保留情况和身份关联方式。毕竟能真正信任谁为自己着想呢总结速卖通首页会在用户不知情时从高度混淆的阿里巴巴安全脚本中创建两个运行中的 WebAudio 图形。这些图形生成并分析波形作为更大规模浏览器指纹识别一部分再通过增益为零的节点连到系统音频输出端让用户听不到声音。在我的设备上这使电脑蓝牙音频通道保持活跃阻止多点耳机切回手机。因没有常规媒体元素可静音标签页静音解决不了问题。用上述两条 uBlock Origin 规则拦截 collina.js 和 fireyejs.js可防止隐藏音频上下文创建这样我浏览速卖通时就能愉快听音乐不被打断。