猫抓M3U8解析器:三步下载完整HLS视频
2026/9/7 3:04:06 网站建设 项目流程

猫抓M3U8解析器:三步下载完整HLS视频

【免费下载链接】cat-catch猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch

cat-catch 是一个开源的浏览器资源嗅探扩展,能在你看网页时捕获页面发出的媒体请求。它内置的 M3U8 解析器可以把 HLS 流的切片列表、清晰度与加密信息一次解析出来,再并行下载、自动合并成完整视频文件,全程不需要安装 ffmpeg 或其他本地工具。

项目速览

  • 项目形态:浏览器扩展(Manifest V3),支持 Chrome、Edge 等 Chromium 内核浏览器及 Firefox,开源协议 GPL-3.0,界面支持十种语言。
  • 适用人群:想把网页上的 HLS 视频保存下来的普通用户,以及想查看流媒体结构(切片、码率、密钥)的新手开发者。
  • 核心模块:后台嗅探逻辑在js/background.js,M3U8 解析页面由m3u8.htmljs/m3u8.js实现,下载器独立在js/m3u8.downloader.js,界面截图见 README/ 目录。

三步上手指南

前置条件:安装猫抓扩展。可直接从各浏览器扩展商店安装;也可以从源码加载:

git clone https://gitcode.com/GitHub_Trending/ca/cat-catch

打开扩展管理页面(如chrome://extensions),开启"开发者模式",点"加载已解压的扩展程序"并选中克隆下来的目录即可。另外,完整功能建议 Chromium 内核 93 以上,104 以上体验最佳(见 README.md 兼容性说明)。

操作步骤

  1. 打开目标视频页面并让视频播放起来,点击浏览器右上角的猫抓图标。弹窗会按标签页列出捕获到的媒体资源,包括 m3u8 地址、大小与来源。
  2. 点击其中的 m3u8 条目,M3U8 解析页面会自动打开。页面会显示切片数量、总时长、分辨率、码率,加密流还会给出密钥地址与算法。
  3. 若是包含多档清晰度的主播放列表(Master Playlist),先在选择界面按分辨率和码率挑一档视频、一条音轨;随后在解析页点"合并下载"。下载进度会同步显示在标签页标题上,完成后自动合并保存。

得到什么:一个完整的视频文件。默认是 ts 切片按顺序合并的结果;勾选"mp4格式"后会在浏览器内用 mux.js 转封装成 mp4,勾选"提取音频"则只保留音轨。

猫抓弹窗界面:按标签页列出捕获的媒体资源,点击即可进入对应解析器

核心机制拆解:多线程流水线下载器

猫抓解析页最核心的价值,是js/m3u8.downloader.js里的Downloader类。它按"输入 → 处理 → 输出"三层工作:

输入js/m3u8.js用 hls.js 解析完播放列表后,得到一份切片对象数组,每个对象带有urlduration(时长)、encrypted/decryptdata(加密信息)和顺序号index

处理Downloader按设定线程数(默认 6)同时启动多个downloader(),每个线程用 fetch 拉取下一个切片。关键设计有两处:

  • 乱序下载、按序落盘。多线程下载完成顺序是随机的,但视频文件必须按顺序拼。所以每个切片的处理结果先写入this.buffer[index]的固定槽位,sequentialPush()再从 0 号开始逐个检查、推送已就绪的数据。这样边下边存(流式下载模式)也不会乱帧。
  • 可插拔的处理管线。每个 buffer 依次经过pipeline中的步骤:数据预处理(部分站点把 ts 伪装在 PNG/JPG 图片头部之后,这里按魔数切掉图片数据)→ 解密(从 m3u8 中声明的密钥地址取回 16 字节 key,用 AES 解密)→ 转码(勾选 mp4 时用 mux.js 把 ts 重封装为 mp4)。管线通过use(fn, name)注册,每一步都能单独开启或跳过。

输出:全部切片就绪后触发allCompleted,所有 buffer 合成一个 Blob,交给chrome.downloads.download保存为文件;勾选在线 ffmpeg 时则把文件发送给页面内置的 ffmpeg-wasm 实例转码。

之所以这样设计,是因为 HLS 下载的难点不在"下载"而在"保序 + 容错 + 可定制"。管线让解密、转码、清洗各自独立,新增一种处理只加一个函数;每个切片带index重试,失败的片段单独补下而不必重头再来(自动重试最多 3 次,间隔递增)。

猫抓 M3U8 解析器:上方显示媒体信息与切片列表,下方是下载范围、线程数与格式选项

适用场景与局限

典型场景说明
点播 m3u8 下载解析全部切片,可只选一部分范围(按序号或时间)下载
多清晰度主播放列表解析后列出各档视频/音轨,按分辨率与码率选择,视频+音轨可交给内置 ffmpeg 合并
AES-128 加密流自动下载并使用密钥,页面同时展示密钥 Hex/Base64 供核对;也支持手动填入自定义 key 与 IV
直播录制解析页出现"录制直播"按钮,按序持续下载新增切片并边下边存

需要坦诚说明两个限制:一是DRM 保护的内容无法处理,带 Widevine、PlayReady 等 ContentProtection 的流,解析器只会提示加密类型而不提供解密能力;二是Chrome 下超大文件受限,源码中明确写了 Chrome 单进程约 2G 的内存上限,超过约 1.8G 的文件走 ffmpeg 转码路径时会自动改为直接保存或流式保存,避免浏览器崩溃。此外 SAMPLE-AES-CTR 这类加密算法也不在解密范围内。

常见问题

Q:解析 m3u8 时报错、显示 403,怎么办?

通常是服务器校验请求头导致的。猫抓在解析失败时会自动用来源页面信息补上 Referer/Origin 再试一次,也可以点解析页的"设置请求头"按钮手动指定;如果地址是一次性签名的 URL,解析器会尝试从原网页缓存中读取 m3u8 原文来救场。先确认该地址换浏览器或换个会话还能否直接访问。

Q:下载中部分切片失败,合并出来的文件不完整?

下载器对每个失败切片会自动重试(最多 3 次,间隔递增),页面同时提供"重新下载所有失败项"按钮,点一下即可只补下失败的切片,不用从头再来。如果失败较多,可以把线程数调低(默认 6),减轻对服务端并发的压力。

猫抓把"找地址、解析列表、下载、合并"这条繁琐的链路收敛成了三次点击,且整个流程都在浏览器本地完成,数据不经过第三方服务器。如果你正在评估它是否好用,建议先拿一个未加密的点播 m3u8 走一遍上面三步,感受一下从嗅探到合并成文件的完整链路。

【免费下载链接】cat-catch猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询