装好扩展,打开视频页面,图标上的数字是 0。

换个网站又正常。于是开始怀疑是扩展坏了、浏览器设置不对、或者这个站有什么”高级反爬”。

大多数情况下,真正的原因在你点播放之前就已经决定了。而且判断它只需要 30 秒——不需要下完 300 个分片才发现徒劳。


30 秒判断法

打开视频页,F12 → Network 面板 → 过滤框输 m3u8(DASH 站点输 mpd)→ 点播放。

看三件事:

  1. 有没有出现清单请求
  2. 状态码是不是 200
  3. 响应内容里有没有 #EXT-X-KEY 或 ContentProtection

三件事对应三种结论:

观察结果 结论 值得试吗
没有清单请求 资源没走标准分片,或在 Worker 内部处理 基本不值得
有请求,401/403 登录态、Token 或防盗链 值得,有解
200,但有 KEY/ContentProtection 加密或 DRM 看 METHOD,SAMPLE-AES 直接放弃
200,无加密 正常 直接下

这个动作的价值在于:它把”试一下”的成本从两小时压到了半分钟。

30 秒三步判断:有无清单请求、状态码、有无加密标记(示意图)

为什么这三步就够:嗅探是旁观,不是破解

理解这一点,很多”为什么下不了”的疑问会自动消失。

浏览器扩展用的是 webRequest 这类观察接口,它看到的是浏览器已经发出的请求记录:URL、方法、响应头、时序。它不读 HTTPS 的响应体(Manifest V3 的限制),也不解密任何东西。

所以边界很清楚:

  • 浏览器拿得到的,扩展看得到
  • 浏览器自己都拿不到的(CDM 解密后的明文、Worker 内存里的数据),扩展更拿不到

这解释了一个常见困惑:为什么某些站点的视频”明明在播”,却抓不到任何可用的分片?因为在那种实现里,数据从来没有以”完整文件”的形式出现过,播放器是逐块解码的。浏览器没有的东西,旁观者也变不出来。


能修的和不能修的

所有失败原因都能归到这两类,先分类再动手,比一个个试参数快得多。

能修与不能修的失败原因对照(示意图)

不能修(别浪费时间)

DRM。 清单里 METHOD=SAMPLE-AES,或 MPD 里有 <ContentProtection>,播放时浏览器加载 Widevine/PlayReady/FairPlay 模块。密钥由 CDM 在受保护环境里管理。

这类不是”技术难度高”,而是设计上就不允许旁观者拿到。继续折腾只是在和自己的时间过不去。

Worker 内部处理。 数据在 Worker 里被处理后直接喂给解码器,网络层看不到标准分片请求。

短时效签名 + 大文件。 签名只有几分钟,文件却有几百 MB。理论上能下,实际上你追不上过期速度。

能修(值得试)

问题 表现 处理
缺 Cookie / Token 单独请求 403,浏览器里正常 在同一次浏览器会话里下,别把链接拷到外部工具
防盗链 Referer 校验 独立请求被拒,响应里提到 referer 带正确 Referer 请求;浏览器扩展天然带
签名过期 下到一半集体 403 缩短下载窗口,或用实时解析清单的工具
只下了一路 有画面没声音 视频和音频两路都下再合并
并发被限流 进度卡住,部分分片 0 字节 降并发重试

注意第一行的区别:同样一个链接,浏览器里能下、用 curl 就 403,这不是玄学,是请求头的差异。把链接从浏览器里复制出去的那一刻,Cookie 和 Referer 就丢了。


三个最常被误解的点

误解一:blob: 就代表下不了

不一定。

blob: 只说明播放器从内存里取数据。但那些数据仍然是网络请求来的,F12 里通常照样能看到 .m3u8 和分片请求。

真正下不了的是另一种:数据在 Worker 里被处理后直接进解码器,网络层压根没有标准分片请求。这两种情况看起来都是 blob:,实际完全不同——一个能抓,一个不能。

判断方法:看 Network 里有没有 .m4s / .ts 请求。有就有戏。

误解二:嗅探等于绕过限制

不是。

扩展记录的是浏览器已经被允许发出的请求。服务端要求授权、浏览器没拿到授权,那请求本身就是 403,扩展记下来的也是一条 403。

它不改变授权关系,只改变”这个文件在不在你手上”。

误解三:本地处理 = 绝对安全

要分形态看。

以 FlowPick 为例:扩展的嗅探、分片下载、浏览器内合并都在你本机完成,媒体数据不经过厂商服务器;但网页版在线工具(粘贴 URL 那种)需要把资源地址交给网页,录制场景下媒体数据也会经过网页——它的隐私说明里写明了这一点。

这不是缺陷,是网页工具的必然。区别在于你用的是装在本地的程序,还是打开一个网站让它替你处理。

验证方法只有一种:打开页面 → 断网 → 操作。断网还能跑完的,处理确实在本地。


兜底方案的真实代价

抓不到的时候,最后手段是录制(MediaRecorder)。但它的成本经常被低估:

  • 必须实时播完。 两小时的内容就要两小时
  • 通常是重新编码。 等于二次压缩,画质比源文件差一档
  • 不能倍速、不能后台、不能休眠。 播放卡一下,录出来就缺一段
  • 分辨率受播放器限制。 小窗播放时可能按小窗尺寸录

所以它的定位是”总比什么都没有强”,不是”更好的方案”。能拿到原始分片就别录,这句话在画质敏感的场景下尤其成立。


小结

判断顺序:先看有没有清单请求,再看状态码,最后看有没有 KEY/ContentProtection。 三步做完,该放弃的可以放弃了。

技术上只要分清两类:能修的是凭据、防盗链、签名、音视频分离、限流;不能修的是 DRM 和 Worker 内部处理。

blob: 不等于下不了,但 Worker 内部处理等于下不了。

本文基于 2026 年 11 月的浏览器扩展机制(Manifest V3)与 FlowPick v1.1.x 的实现情况整理。浏览器策略和站点防护方案都在变化,具体表现以你实际遇到的情况为准。