猫抓 cat-catch 完整指南:三步装好这款浏览器资源嗅探扩展,视频和 m3u8 流一网打尽
【免费下载链接】cat-catch猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch
在网页里看视频,却找不到播放地址;想保存一段直播回放,却被 m3u8 分片挡在门外。cat-catch(猫抓)就是为这类场景做的浏览器资源嗅探扩展:打开任意网页,点一下扩展图标,页面加载过的视频、m3u8 流地址、图片会被自动筛出来,挑中的资源可以直接下载,m3u8 还能合并、转码、录制。
它的思路其实不复杂:内容脚本在页面加载早期就注入进去,后台脚本盯着所有网络请求做初步筛选,列表完全在你本地生成。整篇文章按"装好它、用它、看懂它"的顺序展开,中途会反复强调两件事——只从官方渠道安装,以及确认你的内核版本够不够。
装猫抓的三条路:商店、开发者模式还是离线包
| 方式 | 适合谁 | 步骤 |
|---|---|---|
| 应用商店 | 普通用户 | Chrome / Edge 各自商店搜索 "cat-catch";Firefox 在 AMO 安装(需非中国大陆 IP);Edge Android 用手机访问商店,或直接扫仓库里自带的二维码 README/edgeqrcode.png |
| 源码(开发者模式) | 想审计代码或本地调试的人 | 克隆仓库,在扩展管理页开启开发者模式后加载解压目录 |
| .crx 离线包 | 已拿到官方发布包的人 | 在 Releases 页右键"另存为"下载,拖进扩展管理页即可 |
源码安装的具体操作只有三步:
- 克隆仓库:
git clone https://gitcode.com/GitHub_Trending/ca/cat-catch - 打开扩展管理页面(如
chrome://extensions),开启右上角开发者模式 - 点加载已解压的扩展程序,选中仓库根目录(即包含 manifest.json 的那个文件夹)
⚠️ 有一点必须提前说:cat-catch 是完全开源的,任何人下载、修改后都能重新上架商店,市面上已经出现过多款塞了广告甚至恶意代码的伪猫抓。装完顺手看一眼列表里有没有莫名多出的资源项,扩展描述是否与官方一致,能省掉不少麻烦。所有安装地址以官方文档和官方发布渠道为准。
另外,仓库里同时放着 manifest.firefox.json,Firefox 版走的是 Manifest V2 的background.scripts加载方式,和 Chromium 侧的 service worker 模式不同,跨浏览器使用或看源码时留意一下这个差异。
低于哪个内核版本,功能会被裁剪
官方给的门槛分三层:1.0.17 之后的版本要求Chromium 内核 93 及以上(manifest.json 里的"minimum_chrome_version": "93"与此一致);低于 93 只能用 1.0.16;想要完整功能则建议104 及以上。
光记数字没意义,关键是低于门槛时你会少掉什么:
- 93~103 之间:能装上、能嗅探、能下载,但 2.5.3 版本起数据从
storage.local迁到了storage.session(要求 Chrome 104 以上),2.2.3 加入的新版录制脚本 recorder2.js 也同样要 104+,这两块在旧内核上不可用; - Firefox 单独算:2.4.6 起要求 Firefox 113+,2.5.7 起升级到 Manifest V3,深度搜索、缓存录制这类脚本功能需要 Firefox 128+;
- Chromium 114 以下:2.6.3 修复过因缺少
sidePanelAPI 导致整个扩展不可用的问题,太老的 114 以下版本建议升级。
好在你不用自己判断——扩展在低版本环境会主动隐藏不支持的功能按钮,看不见的按钮基本就是被裁剪掉的能力。
弹出页里有哪些标签和按钮
点击图标打开的弹出页(也可在设置里改成侧边栏模式)是日常使用的主要界面,顶部是四个标签:当前页面(本标签页嗅到的资源)、其他页面(其余标签页)、媒体控制 / 设置、疑似密钥(深度搜索得到的候选解密密钥)。
列表下方是一整排工具:正则筛选、按扩展名过滤、删除重复文件名、排序;功能按钮包括视频录制、WebRTC 流录制、屏幕捕获、深度搜索、缓存捕获、模拟手机 UA、自动下载;对选中资源可以下载、复制、全选/反选、发送给 ffmpeg 在线合并、清空列表。
还有一块容易被忽略的媒体控制面板:对页面里正在播的视频做倍速、画中画、全屏、截图、循环、静音、音量与进度调节,甚至支持跨标签页选择媒体源。
m3u8 解析器:加密流、直播回放都交给它
遇到 HLS 流媒体(尤其是加密的直播/点播),点资源上的 m3u8 解析入口会打开一个专门的解析页:
这个页面接收一组 URL 参数来继承任务上下文:m3u8 地址、自定义请求头、Referer 备用来源、页面标题、自定义文件名、来源标签页(用来回 popup 取密钥)、是否自动下载、下载完是否关页、重试次数、是否发往 ffmpeg。解析器支持在线合并下载、边下边存(适合直播录制)、ffmpeg 转码、按时间范围或逐切片勾选下载、隐藏已下载成功的切片。底层解析靠 hls.js,AES-128 加密流由 m3u8-decrypt.js 里的 AESDecryptor 负责解密。
💡 深度搜索找到疑似密钥后,会直接出现在弹出页的「疑似密钥」标签里,你只需手动填进解析器验证,不用自己翻源码。
嗅探到资源的背后发生了什么
后台脚本 js/background.js 挂了三类网络监听:请求发出时(onSendHeaders)先存下请求头并做一次正则初筛;服务器返回第一个字节时(onResponseStarted)携带响应头,能更准确地判断资源类型;请求失败时(onErrorOccurred)清掉对应的临时缓存。
Manifest V3 的 service worker 有个老问题:闲置约 5 分钟后会被强制终止,监听一旦断掉就"瞎"了。代码里的应对手段很直白——注册两个空的 webNavigation 监听、用一条 HeartBeat 长连接做心跳、再定时调用chrome.runtime.getPlatformInfo,让 worker 尽量保持唤醒。嗅到的资源先暂存在内存 Map 里,由chrome.alarms定时任务批量落盘到storage.session(低版本退回storage.local)。另外,js/content-script.js 以document_start、all_frames: true注入所有 http/https 页面,保证页面还没开始拉资源时脚本就已经就位。
数据都去哪儿了:隐私承诺的底气
官方承诺:扩展收集的所有信息都在本地存储和处理,不发送到任何远程服务器,不含任何跟踪器。
对照代码可以确认这条承诺不是空话:嗅探到的请求头、资源数据放在内存 Map(G.requestHeaders、G.urlMap)里,最终只写入浏览器本地 storage;manifest.json 声明的权限(tabs、webRequest、downloads、storage、alarms等)全部服务于本地功能,文件里没有配置任何远程服务端点;host_permissions里的<all_urls>只用来"看"你访问了哪些资源,而不是把数据传出去。换句话说,它需要的权限和它做的事是对得上的。
谁有权拒绝被嗅探:合规边界与 Opt-Out 流程
官方对使用边界的态度很明确:本扩展仅供下载用户拥有版权或已获授权的视频,禁止用于未经许可抓取受版权保护的内容;用户自行承担全部法律责任,工具按"原样"提供,开发者不承担任何直接或间接责任。
如果你是网站运营方,不希望被 cat-catch 抓取,流程很简单:
- 在本仓库新建一个 Issue;
- 标题使用固定格式:
[Opt-Out Request] 你的网站域名(如[Opt-Out Request] example.com); - 正文附上网站域名和联系人邮箱,供必要时核实身份。
有效请求会在后续版本更新中被加入「避免抓取列表」。开源项目的发版有周期,这里需要一点耐心等待。不想全局等待的话,扩展自身在 js/options.js 的屏蔽网址配置里支持白名单/黑名单两种模式,后台侧对应blockUrlSet的跳过逻辑,命中即不再处理该页请求。
GPL-3.0 对二次开发者意味着什么
许可证演进史只有一句话能讲清:1.0 版是 MIT,2.0 版起改为 GPL v3(根目录 LICENSE 即 GNU GPL v3 全文)。作者的意图也写在 README 里——希望基于 cat-catch 源码开发的衍生扩展保持开源。也就是说,如果你二开并对外分发,就要按 GPL v3 的义务开源你的修改,闭源分发这条路走不通。
核心能力建立在几个成熟开源库之上,lib/ 目录里各有对应文件,完整信息见 lib/third-party-libraries.md:
| 依赖 | 在 cat-catch 里干什么 |
|---|---|
| hls.js | 解析 m3u8 分片清单与媒体信息 |
| mux.js | TS 转 MP4 的封装/转码 |
| mpd-parser | DASH/MPD 清单解析 |
| jQuery + jquery.json-viewer | DOM 操作与 JSON 查看 |
| StreamSaver.js | 流式写文件,实现边下边存 |
| MQTT.js | MQTT 协议推送支持 |
| jquery.qrcode | 资源二维码生成 |
界面文案则通过 _locales/ 目录支持简中、繁中、英语、俄语、西语、日语、韩语、葡语、法语、土耳其语、越南语共 11 种语言。
装完之后建议做两件事:先去设置页把不希望被嗅探的站点加进屏蔽列表,再拿一个自己有版权的试看源完整走一遍"嗅探—m3u8 解析—下载"流程,确认内核版本没有卡掉任何按钮。记住最后一条底线:它抓得到,不等于你能下。
【免费下载链接】cat-catch猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考