猫抓(cat-catch)浏览器扩展:三步完成安装,搞定网页资源嗅探与 M3U8 下载
【免费下载链接】cat-catch猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch
看到想收藏的网课视频,播放页却只有播放按钮没有下载入口;页面里的背景音乐播得好听,右键"另存为"却存回一个空文件;手动复制出来的 M3U8 链接,播放器打不开,得到的只是一堆 TS 分片。开源的资源嗅探扩展**猫抓(cat-catch)**就是为这类情况做的:它监听当前页面的网络请求,按后缀、Content-Type 和正则规则筛出媒体资源,并为 HLS 流媒体内置了完整的 M3U8 解析器,能自动取密钥、解密、合并、转码。
装之前先看清:猫抓能覆盖哪些需求
先确认它是否解决你的问题,能对上号再花时间去装。以下按"功能 × 适用场景 × 上手成本"列出了主要能力,全部来自扩展自带的菜单与设置项:
| 功能 | 适用场景 | 入口位置 | 上手成本 |
|---|---|---|---|
| 资源嗅探 | 页面上有 mp4 / webm / mp3 等直链媒体 | 工具栏猫图标弹出列表 | ⭐ 低 |
| M3U8 解析器 | HLS 网课、直播、切片流合并下载 | 列表项 → 解析 | ⭐⭐ 中 |
| MPD 解析器 | DASH 流媒体 | 功能入口 → MPD 解析器 | ⭐⭐ 中 |
| 深度搜索 / 缓存捕捉 | 常规嗅探漏掉的资源 | 图标菜单或快捷键 | ⭐ 低 |
| 录制 WebRTC / 屏幕捕捉 | 走 WebRTC 通道的播放器流 | 功能入口 → 视频录制 | ⭐⭐⭐ 高 |
| 媒体控制 | 倍速、画中画、截图、循环 | 媒体控制面板 | ⭐ 低 |
| 调用外部工具 | aria2、m3u8dl、在线 ffmpeg 转码 | 设置页配置后在列表项调用 | ⭐⭐ 中 |
易错提醒:应用商店里存在注入广告代码的"伪猫抓",安装时以官方商店地址和开源仓库为准,装完留意扩展是否有异常弹窗或额外权限。
三种安装途径对比:按环境选一条最短路径
猫抓基于 Manifest V3 开发,manifest.json里声明的最低内核是 Chromium 93,想跑满全部功能建议 104 以上;1.0.17 之后的版本都要求内核 93+,旧内核只能停在 1.0.16。当前版本为 2.7.2,支持 Chrome、Edge、Firefox(源码方式)以及 Edge Android。
| 途径 | 适用环境 | 最短步骤 |
|---|---|---|
| 官方应用商店 | 日常使用、自动更新 | 打开对应商店页面 → 搜索 cat-catch / 猫抓 → 点安装 |
| 源码安装 | 开发者、需要改代码 | 执行git clone https://gitcode.com/GitHub_Trending/ca/cat-catch→ 扩展管理页开启"开发者模式" → 点"加载已解压的扩展程序"选中 cat-catch 文件夹 |
| CRX 离线包 | 内网、无法访问商店 | 从仓库 Releases 页右键另存为下载.crx→ 开启开发者模式 → 把 crx 文件拖进扩展页 |
| Edge Android 扫码 | 安卓手机 | 扫描项目提供的 Edge Android 安装二维码即可 |
装完做两件事验证:工具栏应出现猫爪图标;打开任意带视频页面并让它播放几秒,点击图标能看到资源列表。列表提示"还没闻到味儿~"不代表坏了——多半是页面还没触发媒体加载,把视频点开等它出画面再刷一次列表。
核心机制拆解:一条 M3U8 链接如何变成完整视频
嗅探列表解决"找到资源",M3U8 解析器解决"拼成文件"。HLS 流把视频切成若干 TS 分片,靠一个 m3u8 索引按序播放,直接下载索引文件毫无意义。猫抓的处理链路是:
输入 m3u8 地址/内容 → 解析播放清单 → 列出分片并定位密钥 → 多线程下载分片 → 解密(如加密)→ 合并或在线 ffmpeg 转 mp4 → 落盘解析器页面会先显示清单概况(共多少个文件、总时长),密钥栏能自动"寻找到疑似密钥",找不到时支持手动填入 16 进制、base64 或密钥地址。关键参数及建议如下(默认值取自 js/init.js 的出厂配置):
| 参数 | 默认值 | 调整建议 | 适用场景 |
|---|---|---|---|
下载线程(M3u8Thread) | 6 | 弱网降到 2~4,宽带可上到 8~16 | 分片多且失败率高时优先降线程 |
在线 ffmpeg(M3u8Ffmpeg) | 开启 | 文件超过约 1.8GB 时在线服务不可用,改走下载合并 | 需要直接得到可播放 mp4 |
mp4 格式(M3u8Mp4) | 关闭 | 需要兼容性好的容器时开启 | 分片为 TS 且播放器挑食 |
只要音频(M3u8OnlyAudio) | 关闭 | 只想要 BGM 时开启 | 视频流中提音频 |
跳过解密(M3u8SkipDecrypt) | 关闭 | 确认流未加密时开启,省一步 | 无 KEY 的明文流 |
| 边下边存(StreamSaver) | 关闭 | 大文件、浏览器内存吃紧时开启;注意该模式不支持 ffmpeg 转格式和失败切片重下 | 长时间录制 |
| 下载范围 | 全部 | 填起始/结束序号只取区间 | 只保存某几段 |
| 密钥 | 自动探测 | 提示"密钥不正确"时手动输入 | 加密 HLS |
流类型支持边界要心里有数,避免浪费时间:
| 流类型 | 猫抓处理 |
|---|---|
| 未加密 HLS | ✅ 直接合并 |
| AES-128 加密 | ✅ 自动取密钥解密 |
| SAMPLE-AES-CTR 加密 | ❌ 明确提示暂无法处理 |
| DRM 保护 | ❌ 需第三方工具 |
| HEVC/H.265 切片 | ⚠️ 浏览器内不支持预览,只能走在线 ffmpeg 转码 |
| 直播 HLS | ✅ 录制模式持续写入 |
三条高频使用路径:每步做什么、哪里容易踩坑
路径一:保存直链视频(mp4 / webm / mp3)
适用人群:网课学生、资料存档者。
- 打开目标页面,点击播放让媒体开始加载(不播放就没有请求,列表就是空的)
- 点击工具栏猫图标,列表按页面分组展示资源,显示大小和标题
- 用筛选栏按后缀或大小过滤,默认已覆盖 mp4、webm、mp3、m3u8、mpd 等 30 余种后缀,可在设置页增删
- 对目标项点"下载",批量操作先"全选/反选"再统一下载
易错提醒:列表混入大量无关节流文件时,在设置页按后缀或Content-Type加最小体积阈值过滤;网站对桌面端隐藏资源时,开启"模拟手机"(会切换为 iPhone 的 User Agent)再刷新页面。
路径二:M3U8 课程流合并下载
适用人群:HLS 课件、回放节目下载者。
- 从嗅探列表复制 m3u8 地址,或直接在解析器输入框粘贴地址/清单内容
- 等清单解析完成,核对"共 N 个文件、总时长"是否符合预期
- 加密流确认密钥状态:出现"寻找到疑似密钥"直接用;提示"密钥不正确"时改为手动输入(16 进制 / base64 / 密钥地址均可)
- 保持 6 线程默认值点开始;完成度不够时用"重下失败项"补齐,而不是整单重来
进阶技巧:链接带有时效 GET 参数且解析失败,用"还原 get 参数"或在"请求头"里补上页面真实的 Referer;想交给本地工具处理,可在设置页配置m3u8dl命令行模板后点"调用"。
路径三:直播内容录制
适用人群:直播回放存档、内容备份。
- 打开直播页,等页面开始拉流(解析器显示"等待直播数据"说明链路已就绪)
- 开启"录制直播",需要控制体量时先设好"录制时长"
- 直播结束或到达设定时长后点"停止录制",分片自动合并
- 需要通用格式时勾选在线 ffmpeg 转码(HEVC 切片必须走这条路)
易错提醒:录制期间不要关闭该标签页;网络抖动会导致个别分片失败,合并前检查分片列表,用"重下失败项"补漏。
出问题时按这个顺序排查
| 现象 | 可能原因(按概率排序) | 解法 |
|---|---|---|
| 嗅探列表为空 | ① 媒体未触发加载 ② 内核低于 93 ③ 网站对当前 UA 隐藏资源 | 先播放视频再刷新列表;升级浏览器或回退 1.0.16;开启"模拟手机"后重新加载页面 |
| 分片下载慢、失败多 | ① 线程过高导致拥塞 ② 服务器限速 ③ 部分切片 403 | 线程降到 2~4;在请求头补 Referer/Cookie;失败后点"重下失败项" |
| 下载完打不开或黑屏 | ① 加密流未正确解密 ② HEVC 编码 ③ 合并中断 | 核对密钥输入;HEVC 走在线 ffmpeg 转码;重新下载并确认"下载完成"状态 |
| M3U8 解析报错 | ① 链接过期(时效参数失效)② SAMPLE-AES-CTR/DRM ③ 密钥地址 404 | 从页面重新复制新鲜链接并"还原 get 参数";前两者换第三方工具;手动输入密钥 |
| 列表资源过多、CPU 高 | ① 页面媒体请求密集 ② 未排除重复 | 设置页开启"排除重复的资源";用正则/后缀筛掉无关项 |
项目内部结构速览
进阶用户想读源码或提 PR 时,先认清这棵目录树:
cat-catch/ ├── catch-script/ # 按功能注入页面的脚本 │ ├── catch.js # 核心资源嗅探 │ ├── search.js # 深度搜索 │ ├── recorder.js # 视频录制(WebRTC) │ ├── recorder2.js # 屏幕捕捉 │ └── webrtc.js # WebRTC 通道流捕获 ├── js/ │ ├── background.js # 后台服务:请求监听、权限调度 │ ├── popup.js # 资源列表弹窗逻辑 │ ├── m3u8.js # M3U8 解析器主逻辑 │ ├── m3u8.downloader.js# 分片多线程下载器(默认 6 线程) │ ├── mpd.js # DASH/MPD 解析 │ ├── downloader.js # 通用资源下载器 │ ├── options.js # 设置页 │ └── init.js # 全局默认配置(线程数、后缀白名单等) ├── css/ # 各界面样式 ├── _locales/ # 10 种语言文案(中/英/日/韩/西/俄/法外欧语等) ├── lib/ # 第三方库:hls.js、mux.js、StreamSaver.js、mqtt 等 ├── img/ # 图标 ├── manifest.json # 扩展声明(Manifest V3,最低内核 93) └── tools/sync-locales.js # 多语言同步脚本所有出厂默认值集中在js/init.js的OptionLists里,想确认某个开关的默认行为,翻这一个文件即可。
隐私、版权与参与方式
猫抓的隐私策略在 README.md 中写明:所有抓取的信息在本地储存处理,不发送到远程服务器,不含任何跟踪器;抓到的资源数据也存在浏览器本地(storage.session/local),设置走storage.sync以便多端同步。
使用边界要守住三条线:
- 版权:仅下载自己拥有版权或已获授权的内容,项目免责条款明确使用责任由用户自行承担
- 拒绝抓取:网站运营方若不希望被嗅探,可提交标题为
[Opt-Out Request] 域名的 Issue,核实后域名会进入避免抓取列表 - 许可:2.0 起为 GPL-3.0(1.0 为 MIT),基于其源码的衍生扩展被期望继续保持开源
参与渠道:问题和建议走仓库 Issue;设置页内置"导出设置 / 导入配置",换机或分享配置时直接传文件即可,比逐项重填省事。
下一步行动清单
- 从官方渠道装好扩展,顺手在浏览器"关于"页确认 Chromium 内核 ≥ 104(≥ 93 也能用,功能打折)
- 找一个已知有 mp4 的页面跑通"播放 → 嗅探 → 筛选 → 下载"最短链路,列表为空时先回到"是否播放了"这一步
- 用一条真实 M3U8 验证解析器:保持 6 线程默认值,观察密钥是否自动定位;失败分片多时把线程降到 2~4 再试,而不是直接判定不支持
【免费下载链接】cat-catch猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考