☰
猫抓 cat-catch 完整指南:浏览器资源嗅探扩展如何把网页视频与 m3u8 直播流变成可下载文件
2026/9/25 2:28:58 网站建设 项目流程

猫抓 cat-catch 完整指南:浏览器资源嗅探扩展如何把网页视频与 m3u8 直播流变成可下载文件

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

猫抓(cat-catch)是一款运行在 Chrome、Edge 与 Firefox 上的开源浏览器资源嗅探扩展,当前版本 2.7.2。它在后台持续监听网页发出的每一条网络请求,按类型、大小、正则把视频、音频、m3u8 播放列表等媒体资源自动筛进列表,再配合内置的 m3u8 解析器完成切片合并、AES 解密与 mp4 转码,解决"网页里能看、却存不下来"的核心问题。所有数据仅在本机存储处理,不上报任何远程服务器(见 README 隐私政策)。

功能与版本速览

先给一张全景表,方便 30 秒建立认知。版本号均可在 CHANGELOG.md 中查证:

功能引入版本说明与局限
被动资源嗅探(视频/音频/m3u8/mpd)1.0.18 起每标签页最多存 9999 条(2.5.9 起),超 500 条时面板可中断加载保流畅(2.4.2)
正则匹配抓取与屏蔽1.0.232.6.0 起正则可读取请求头参与判断
过滤大小表达式(如>100 KB、500-1000 MB)2.6.8仅作用于嗅探过滤,不作用于解析器
m3u8 解析器(切片合并/解密/转码)2.0.0 起在线合并最大 6 下载线程(2.4.7);2.7.1 起下载失败自动重试
在线 ffmpeg 转 mp42.3.02.6.8 起支持"嵌套在线 ffmpeg",不再单独开标签页
WebRTC 录制脚本2.4.9(2.5.3 重写)侵入页面,建议按需开启而非常驻
视频捕获 / 缓存捕捉2.0.0对被动嗅探盲区的主动兜底
深度搜索(搜 m3u8 地址与疑似密钥)2.2.42.5.7 起支持密钥验证;2.6.6 起可解析 vimeo playlist.json
屏蔽列表(黑/白名单)2.5.92.6.5 起另有全局强制屏蔽名单
推送 aria2 / MQTT / 调用本地程序2.4.7 / 2.6.4 / 2.5.3aria2 支持 RPC 密钥与指定下载目录(2.7.0)
快捷键、自定义 CSS2.4.0manifest 预置enable、auto_down、deepSearch等命令槽位

典型场景:从嗅探到落地的三条路径

场景一:网页在播的视频,右键"另存为"只能存下几 KB 占位符

场景描述:视频页通常把媒体拆成几百条请求——可能是一个.mp4,也可能是一段段.ts切片。手动打开 F12 翻 Network 面板,既慢又依赖经验。

为什么常规做法行不通:人眼无法在持续刷新的请求流里分辨"哪条才是真正的媒体",且防盗链资源离开原页面后 Referer/Cookie 不匹配就会失效。

猫抓分 3 步解决:后台 Service Worker 通过webRequestAPI 在"发出请求"和"收到响应头"两个节点捕获数据(见 js/background.js);按你配置的类型、大小、正则过滤后存入列表,并记录该资源当时的完整请求头;下载时原样复用这些请求头,直接落盘。预期结果:播放几秒视频后点开面板,列表里已出现按标签页分组的资源条目,勾选下载即可。

猫抓弹出面板:按标签页分组展示嗅探到的视频与 m3u8 资源,支持预览与正则筛选

场景二:m3u8 地址下载下来的只是"播放顺序表",不是视频

场景描述:大量网页用 HLS(m3u8,一种按顺序列出视频切片的播放列表格式)播放。直接复制 m3u8 地址下载,得到的只是一个文本文件。

为什么常规做法行不通:切片分散在几十上百个请求里,需要并发拉取、按序合并;加密流还要先取 AES 密钥解密;带EXT-X-BYTERANGE标签的"伪切片"(同一 mp4 内按字节范围切出)更是标准工具容易翻车的地方。

猫抓分 4 步解决:点击资源列表的解析器图标进入独立解析页(m3u8.html 与 js/m3u8.js);页面展示全部切片、总时长与文件大小估算(2.6.2 起),支持点选任意切片合并(2.6.8 起);加密流可手动填密钥,或用深度搜索在页面脚本中搜疑似密钥(2.2.4 起,2.5.7 起可验证);最后选择"ffmpeg 转码"(默认)或"边下边存",输出完整 mp4。预期结果:一个完整、可播放的本地文件。局限:一次性 URL(离开页面即失效)需要 2.7.0 起"从缓存中读取 m3u8"来缓解,不能保证万能。

m3u8 解析器:展示切片列表、自定义密钥与下载参数,是猫抓最重的功能块

场景三:媒体流根本不发 HTTP 请求,嗅探天然失明

场景描述:视频通话、部分直播用 WebRTC(浏览器间点对点实时通信协议)直接推流,网络上不存在可嗅探的媒体 URL;少数站点的播放地址则藏在页面 JS 里。

为什么常规做法行不通:webRequest 只能看到真实发生的网络请求,对 P2P 通道与脚本内动态生成的地址均无感知。

猫抓分 2 步解决:在catch-script/目录提供一组按需注入页面的脚本——webrtc.js 注入悬浮面板列出可抓取的音视频轨道(视频码率 2.5/5/8/16 Mbps、音频 128/256 kbps 可选,支持"1 小时保存一次"生成分段文件);search.js 深度搜索页面脚本中的 m3u8 地址与密钥。代价:这类脚本会侵入页面,2.6.5 与 2.6.6 都曾修复"深度搜索导致某些网站无法正常使用"的问题,务必按需开启而非常驻。

实操走查:安装、第一次嗅探与进阶玩法

安装(三选一)

  1. 应用商店:在 Chrome Web Store / Edge 附加组件 / Firefox Add-ons 搜索 cat-catch 安装;
  2. 源码加载:git clone https://gitcode.com/GitHub_Trending/ca/cat-catch,在扩展管理页开启"开发者模式","加载已解压的扩展程序"选中该目录;
  3. crx:从 Releases 下载后拖入扩展管理页(需开发者模式)。 预期结果:工具栏出现猫抓图标,图标数字角标随嗅探数量增长。

第一次嗅探4. 打开任意带视频的网页,让视频播放几秒,点击工具栏图标。预期结果:面板按标签页分组列出捕获资源(视频、m3u8、音频、json……)。 5. 勾选目标条目点"下载所选"。预期结果:文件按替换标签生成的文件名保存到下载目录;若资源无文件名,2.5.8 起会尝试用页面标题命名。

想玩深一点6. 快捷键:设置 → 快捷键,为启用/暂停嗅探、捕获、预览绑定全局键(2.4.0 起)。 7. 自动化管道:设置里配置 aria2 RPC(填密钥、Cookie,2.7.0 起可指定下载目录)或 MQTT 主题,把大文件交给本地 aria2/NAS 稳定落地;无协议的程序可用"调用本地程序"(2.5.3)。 8. 外观与过滤:设置页填入自定义 CSS 直接改面板样式(2.4.0);过滤大小支持表达式写法,如>100 KB(2.6.8)。 9. 手机环境:Edge Android 可扫码安装(README 提供二维码),2.6.1 起有手机适配。

原理深潜:两处值得借鉴的工程取舍

取舍一:用"心跳"换常驻后台。Manifest V3 的后台是 Service Worker(一种事件驱动、空闲即被浏览器强制回收的后台进程),空闲约 5 分钟即终止——后台一死,嗅探就漏抓。猫抓的方案(1.0.24 引入心跳,2.0.0 完善自我唤醒)是让内容脚本与后台维持一条名为HeartBeat的端口连接,每 250000 毫秒(4 分 10 秒)断开、页面重连,把后台"顶"在休眠线以内:

chrome.runtime.onConnect.addListener(function (Port) { if (Port.name !== "HeartBeat") return; Port.postMessage("HeartBeat"); const interval = setInterval(function () { clearInterval(interval); Port.disconnect(); }, 250000); });

(摘自 js/background.js)

动因是功能完整性:替代方案是把监听搬进内容脚本,但那会失去跨页面全局视角与请求头访问能力,代价更大。放弃的则是健壮性——这依赖浏览器"有活跃端口连接就不杀"的隐式行为,作者本人在 2.0.0 更新记录里称之为"肮脏的手段",Chrome 策略一变即可能失效。

取舍二:storage.session 换 IO 稳定性。2.5.3 起数据存取从storage.local(落盘、重启仍在)切到storage.session(内存中、随会话消失),代码注释直书目的:"减少 IO 错误导致扩展无法使用"。后台再用chrome.alarms定时把内存缓存写回(chrome.storage.session ?? chrome.storage.local),低版本 Chrome 自动回退。放弃的是崩溃/重启后的嗅探历史,换来的是长时间浏览下扩展"活下来"的概率。

边界清单:它不能做什么

先说明确不做的事:

  • DRM 内容:不处理 Widevine 等 DRM 解密;受版权保护内容的下载责任由使用者自行承担(README 免责条款)。
  • YouTube:2.4.3 起移除专属支持,官方建议改用缓存捕捉。
  • 嗅探上限:每标签页最多 9999 条资源(2.5.9);被动嗅探对 WebRTC/脚本内地址天然失明,需脚本兜底。
  • 一次性 URL:缓存读取(2.7.0)只是缓解手段,密钥类资源仍依赖深度搜索命中率。
  • 平台降级:夸克浏览器缺少chrome.downloadsAPI,js/polyfill.js 用<a download>模拟,代价是无法监听下载状态、无法判断失败;侧边栏模式需 Chromium 114+(114 以下注入空实现)。

平台兼容一览:

维度支持情况说明
Chrome / Edge(Chromium)93+(manifest 最低要求)完整功能需 104+(storage.session);侧边栏需 114+
Firefox113+(strict_min_version)2.5.7 起升级 MV3;深度搜索、缓存捕捉等脚本功能需 128+;无侧边栏
Edge / 夸克 Android支持2.6.1 手机适配;夸克部分功能降级(下载 API 缺失)
Safari不支持无对应构建
网页范围http/https://*/*内容脚本匹配全部网页(manifest.json)

与替代方案的关系

三者是互补而非替代:

方案形态能做什么局限
浏览器 F12 手动查看内置开发者工具查看单条请求、手动复制 URL无自动筛选,无合并/解密/录制
猫抓 cat-catch浏览器扩展嗅探 + m3u8 解析解密合并 + WebRTC 录制 + 后处理管道依赖浏览器环境,大文件受浏览器进程约束
N_m3u8DL-CLI命令行工具m3u8 高稳定性下载需先拿到地址,无嗅探与录制能力

猫抓通过m3u8dl://协议(2.0.0 起)可直接调用 N_m3u8DL-CLI 或本地程序(2.5.3),正是把"找到并预处理"与"大文件稳定落地"串起来的通道。选择建议:偶尔存个网页视频,用猫抓嗅探列表即可;批量处理 m3u8 直播,走"猫抓 → aria2/N_m3u8DL-CLI"管道最稳。

项目现状

当前版本2.7.2(manifest.json),近期更新集中在 m3u8 解析器:2.7.0 数据预处理(切片剔除图片数据)与缓存读取、2.7.1 下载失败自动重试、2.7.2 隐藏下载成功切片。更新节奏稳定,功能面持续扩张。语言覆盖已达 11 个 locale 目录(_locales/:中简/繁、英、日、韩、俄、西、葡、土、越、法),多数由社区贡献。许可协议为GPL-3.0(1.0 版为 MIT,2.0 版起改为 GPL v3),README 明确要求基于其源码的扩展保持开源——这是针对"山寨上架加广告"问题的直接回应,安装时请以官方渠道为准,避免装到带广告代码的伪猫抓。构建流程由 justfile 管理(just build出 crx/zip)。

入门动作

  • 新手:应用商店安装 → 播一段视频 → 点开面板下载第一条资源;
  • 进阶用户:遇到 m3u8 进解析器页面,把下载任务配置给 aria2,形成"网页 → NAS"管道;
  • 开发者:读 js/background.js 的 HeartBeat 实现与 js/polyfill.js 的降级层,看一个扩展如何与浏览器进程管理周旋。

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

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

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

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

立即咨询