Cat-Catch:支持 HLS/DASH 合并下载的浏览器资源嗅探扩展
【免费下载链接】cat-catch猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch
Cat-Catch(猫抓)是一个采用 GPL-3.0 协议开源的网页视频下载类浏览器扩展,当前版本 2.7.2。它通过拦截页面网络请求,把视频、音频、图片资源整理成可筛选的列表,并支持直链下载与 HLS(M3U8)、DASH 流媒体合并,全程在本地处理数据,不带跟踪器。
拆解请求拦截与媒体识别链路
猫抓的工作流程分四层。第一层是请求捕获:扩展以 Manifest V3 形式运行,js/background.js中的 Service Worker 监听页面的所有网络响应,按 MIME 类型、URL 后缀和响应头中的 Content-Length 做初步归类;同时注入到每个页面的catch-script/catch.js会处理 iframe 内嵌播放、移除 sandbox 限制,保证动态加载的资源不被漏掉。第二层是资源识别与去重:捕获到的候选资源进入background.js的findMedia过滤逻辑,按类型、大小规则(支持>100 KB、500-1000 MB这类表达式)筛出最终列表,并可通过正则做二次匹配。第三层是流媒体解析:对 M3U8 播放列表走js/m3u8.js的专用管线,对 MPD 清单走js/mpd.js(基于 mpd-parser)。第四层是下载执行:js/downloader.js负责分片并发拉取、进度回传,必要时把数据流转发给 ffmpeg 处理。
| 模块 | 职责 | 对应文件 |
|---|---|---|
| 资源嗅探核心 | 页面内捕获请求、处理 iframe、维护捕获开关 | catch-script/catch.js |
| 后台消息中枢 | 请求过滤、媒体判定、命令路由 | js/background.js |
| M3U8 解析器 | 播放列表解析、加密处理、分片合并 | js/m3u8.js |
| 下载管理器 | 并发下载、进度监控、ffmpeg 对接 | js/downloader.js |
| 弹出界面 | 资源列表渲染、预览、批量操作 | js/popup.js |
解析 M3U8 流媒体的处理管线:
- 拉取并解析播放列表,枚举全部分片(segment)
- 识别加密标签,自动获取或按用户输入补全 AES-128 密钥
- 以多线程并发下载分片,默认 6 线程
- 解密并依序合并,可按需转换为 MP4 格式
- 出错自动重试,完成后自动剔除已下载成功的切片
安装并下载第一个视频
- 应用商店:在 Chrome / Edge / Firefox 官方商店搜索 Cat-Catch 安装;或从源码安装:
git clone https://gitcode.com/GitHub_Trending/ca/cat-catch,在扩展管理页打开"开发者模式"后"加载已解压的扩展程序"。 - 捕获资源:打开含视频的目标页面,播放视频,点击工具栏的猫抓图标,面板会列出当前页捕获到的全部媒体资源。
- 完成下载:勾选目标文件,点击下载即可保存到本地;M3U8 链接可粘贴进插件自带的解析器页面完成合并。
三个真实使用切片
保存一门网课的完整视频列表(直链类)
- 触发条件:页面以 MP4 等常规格式加载,资源在播放后才出现在网络请求中。
- 操作步骤:播放视频等待几秒;打开猫抓面板按大小或格式筛选;勾选需要的高清分片;批量下载。
- 产物与注意:得到若干独立视频文件。若列表为空,多为资源懒加载,需先播放再捕获;带 Referer 校验的直链在外部播放器中可能打不开,属正常现象。
合并一场直播回放为离线 MP4(HLS 类)
- 触发条件:视频由
.m3u8播放列表 + 多分片组成,直接下载只能拿到列表文件。 - 操作步骤:复制播放列表地址或从面板打开 M3U8 解析器;粘贴链接解析,核对分片数与时长;按需设置线程数与输出格式;开始合并。
- 产物与注意:得到单个 MP4/合并文件。遇到一次性签名 URL 时,解析器可尝试从已捕获的缓存读取数据;部分列表带 EXT-X-BYTERANGE 标签,2.6.8 起已支持合并。
提取一个网页里的全部图片(批量类)
- 触发条件:页面图片以
<img>或背景图形式加载,数量较多。 - 操作步骤:完整滚动页面触发全部加载;打开面板切换到图片类型筛选;按大小表达式(如
>100 KB)过滤掉图标;批量保存。 - 产物与注意:得到图片文件集合。注意区分缩略图与原图,同名不同尺寸的图建议按大小字段二次核对。
列出猫抓覆盖不到的边界
- 带 DRM(Widevine、PlayReady 等)保护的正版流不在支持范围内,扩展不提供任何解密绕行。
- WebRTC 直播依赖脚本重放录制(
catch-script/recorder.js),对部分平台握手流程不稳定。 - DASH(MPD)支持相对较新,多码流多音轨的复杂清单下,码流组合选择能力有限。
- Firefox 与移动端(Edge Android 等)的兼容是持续修补中的状态,个别功能以 Chromium 上体验为准。
排查嗅探与下载故障
| 现象 | 大概率原因 | 处理方式 |
|---|---|---|
| 面板列表为空或缺资源 | 资源懒加载,未播放不触发请求 | 先播放视频,等待数秒后刷新捕获 |
| M3U8 部分分片 403 | 分片 URL 为一次性签名 | 用已捕获缓存重新解析;2.7.1 起出错自动重试 |
| 预览窗口无法播放 | 资源带 Referer/防盗链校验 | 改用直链复制或浏览器原生播放确认 |
| 合并速度低于预期 | 并发过高导致连接被限流 | 降低线程数,或交给 aria2 / 本地程序接管 |
- M3U8 下载线程数默认 6(
m3u8.html中可见),弱网下可先调到 2-4 观察成功率。 - 过滤大小支持表达式与区间,例如
>100 KB、500-1000 MB,可直接用来剔除缩略图。 - 各参数的完整默认值以项目文档和设置页为准。
定位核心目录与参与入口
catch-script/:页面侧嗅探脚本,含 WebRTC 录制逻辑js/:后台、解析器、下载器与 UI 主逻辑_locales/:10 种语言的界面文案(zh_CN、en、es、ja、ko、ru 等)lib/:第三方库(hls.js、mux.js、mpd-parser 等)- README.md、CHANGELOG.md:安装说明与逐版本变更记录
问题反馈与功能建议通过仓库 Issue 提交,代码或翻译改进可提交 PR;网站运营方也可按 README 中"版权保护与拒绝抓取声明"的格式提交 Opt-Out 申请。
Cat-Catch 的定位始终是本地优先的媒体资源嗅探与下载工具,能力边界如上所述,使用请遵守内容版权。更多说明见 README.md。
【免费下载链接】cat-catch猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考