浏览器资源嗅探扩展 cat-catch:从内核版本到下载加密 m3u8 的实战路径

发布时间:2026/10/11 4:35:55
浏览器资源嗅探扩展 cat-catch:从内核版本到下载加密 m3u8 的实战路径
浏览器资源嗅探扩展 cat-catch从内核版本到下载加密 m3u8 的实战路径【免费下载链接】cat-catch猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch播放器能播页面上却找不到下载按钮右键也只有视频另存为——这是保存在线视频时最常见的场景。cat-catch猫抓是一个浏览器资源嗅探扩展把页面加载过的媒体资源视频文件、m3u8 流媒体地址、图片全部捕获出来再提供筛选、合并、转码与下载。它擅长什么又在哪里画线一句话定位cat-catch 拦截页面发出的 HTTP 请求与响应把可下载的媒体资源整理成清单让你挑一个带走。它擅长的事列出并筛选页面全部资源正则、扩展名、去重、时长排序解析 m3u8/HLS流媒体常用的分片播放列表格式与 DASH/MPD 清单支持 AES-128 解密、在线合并、发送到 ffmpeg 转码缓存捕获、深度搜索在页面数据里找疑似解密密钥、视频/WebRTC 录制、跨标签页媒体控制。它不做的事不改善画质、不重新编码不提供远端下载服务所有下载都由你本地浏览器完成也看见页面没向服务器要过的资源——页面没请求过的内容工具变不出来。三条获取路径商店、源码还是离线装普通用户的最快路径打开对应商店搜索 cat-catchChrome 走 Chrome 网上应用店Edge 走 Microsoft Edge 加载项商店Firefox 版本在 Firefox 附加组件AMO商店注意需用非中国大陆 IP 访问手机 Edge 用户直接扫官方二维码安装见下图装完点击扩展图标弹出页即列出当前页捕获的媒体。⚠️ cat-catch 完全开源任何人都可以修改后重新上架商店市面上已出现携带广告甚至恶意代码的伪冒版本。只认官方商店页面与官方发布包别从来源不明的站点拿 .crx 文件。开发者的源码审计与调试路径克隆仓库git clone https://gitcode.com/GitHub_Trending/ca/cat-catch打开扩展管理页如chrome://extensions开启右上角开发者模式点加载已解压的扩展程序选中仓库根目录含 manifest.json 的那一层改动代码后在管理页点刷新即可生效适合审计逻辑或加自己的分支。离线或企业内网路径在有外网的机器上到官方仓库 Releases 页面右键 .crx 文件另存为把文件拷贝进内网机器内网机器的扩展管理页开启开发者模式将 .crx 直接拖入窗口浏览器提示确认即完成安装。一个差异要留意仓库同时打包了 manifest.firefox.jsonFirefox 版本仍用 Manifest V2 的background.scripts加载模式js/background.js 顶部注释写明了两种后台脚本加载方式的区别做跨浏览器维护时别忽略。内核版本要多高才能用全功能manifest.json 里声明了minimum_chrome_version: 93但这只是能装上的底线。真正的功能分界是这样的内核版本扩展可用性当前 2.7.2Chromium 低于 93只能用 1.0.161.0.17 起一律装不上Chromium 93–103基础嗅探可用storage.session会话存储2.5.3 起、新录制脚本recorder2.js2.2.3 起在低版本被隐藏不支持的按钮会主动收起Chromium 104–113大部分功能可用低于 114 的内核缺少sidePanelAPI2.6.3 修复了此类内核上扩展不可用的问题Chromium 104完整功能官方文档的推荐线Firefox2.4.6 起要求 1132.5.7 起升级到 Manifest V3128 才支持深度搜索、缓存录制等脚本自查方法地址栏输入chrome://versionEdge 为edge://version看Chromium 版本一行Firefox 查about:version。它是怎么看见页面资源的机制拆解webRequest 两个钩子先请求头再响应头结论先行cat-catch 不扫页面 DOM 找video标签而是挂在浏览器网络请求管线上请求经过即打标。manifest.json#L69-L81 以run_at: document_start、all_frames: true把 js/content-script.js 注入所有 http/https 页面保证资源加载早期就到位。真正的捕获发生在后台利用的是浏览器网络监听 API webRequestchrome.webRequest.onSendHeaders在请求发出时把请求头存进G.requestHeadersMap 并做正则初筛 js/background.js#L64-L74服务器回第一个字节触发onResponseStarted此时响应头齐全资源类型判断更准 js/background.js#L76-L86onErrorOccurred清理失败请求留下的临时缓存 js/background.js#L88-L93。命中的资源先进内存G.urlMap再由定时任务落盘。点击图标后看到的弹出页就是这份清单的视图层顶部四个标签页是当前页面其他页面媒体控制/设置疑似密钥深度搜索得到的疑似解密密钥放在这里下方是筛选栏正则、扩展名、去重、排序与两组按钮功能组视频录制、WebRTC 录制、屏幕捕获、深度搜索、缓存捕获、模拟手机 UA、自动下载和下载组下载所选、复制、全选/反选、在线合并送 ffmpeg、清空。媒体控制面板还能对网页里正在播的视频做倍速、画中画、全屏、截图与进度拖拽。后台脚本为什么不会被浏览器杀掉结果用户停留很久再回来资源列表不丢。原因是 Manifest V3 的后台是 Service Worker后台脚本空闲约 5 分钟会被浏览器强杀js/background.js#L10-L12 的注释就直说了这一点。cat-catch 用三个手段保持微活跃注册webNavigation.onBeforeNavigate与onHistoryStateUpdated空监听页面一导航就把自己唤醒 js/background.js#L13-L14名为HeartBeat的长连接端口250 秒后断开重建持续维持存活 js/background.js#L15-L27每 25 秒调一次chrome.runtime.getPlatformInfojs/background.js#L28。即便 worker 仍被杀findMedia被中断后会等全局初始化完成再自我重试 js/background.js#L96-L103捕获不丢。m3u8 管线如何把分片变成完整视频加密点播的 m3u8 在浏览器里能播、却没法直接存成文件解析器就是为这类场景做的专用管线。入口是一串 URL 参数url、requestHeaders、initiatorReferer 备用、title、filename、tabid回 popup 取密钥、key、autoDown、retryCount、ffmpeg等 js/m3u8.js#L2-L31。管线分四步lib/hls.min.js 的Hls实例解析播放列表与分片信息 js/m3u8.js#L73-L76AES-128 加密流交给 lib/m3u8-decrypt.js 的AESDecryptor逐片解密 js/m3u8.js#L80深度搜索到的疑似密钥进possibleKeys集合 js/m3u8.js#L82同时显示在弹出页疑似密钥标签里供人工验证分片下完后可在线合并、用 lib/mux.min.js 做 TS→MP4 封装或发送到 ffmpeg 转码。2.7.2 还加了隐藏下载成功的切片与倒序排列边下边存模式下由 lib/StreamSaver.js 做流式写盘直播流可以边播边存。你的数据去哪了又能合法下载什么数据存在哪里全部本地无远端服务器、无跟踪器。嗅探到的请求头与资源先挂在后台内存 Map 上 js/background.js#L37-L38落盘交给浏览器定时任务 APIchrome.alarmsif (alarm.name save) { (chrome.storage.session ?? chrome.storage.local).set({ MediaData: cacheData }); return; }即 js/background.js#L46-L55 的 save 逻辑优先写随浏览器关闭即清的storage.session不可用时退回storage.local。manifest.json 声明的 tabs、webRequest、downloads、storage、alarms 等权限全部服务于本地功能host_permissions里的all_urls只用于感知页面资源请求不是数据上传通道。你能合法下载什么官方文档的界线很明确扩展仅供下载你拥有版权或已获授权的视频禁止未经许可抓取受版权保护的内容。使用行为的全部法律责任由用户自担工具按原样提供开发者不承担直接或间接责任。网站如何申请不被嗅探在本仓库新建一个 Issue标题用固定格式[Opt-Out Request] 你的域名如[Opt-Out Request] example.com正文附上网站域名与联系人邮箱便于核实身份。有效请求会在后续版本中把域名加入避免抓取列表。扩展侧由 js/options.js 的屏蔽网址配置白名单/黑名单两种模式与blockUrlSet请求跳过逻辑 js/background.js#L115-L118 共同生效开源项目更新有周期等一个版本发布即可。许可证、依赖与二次开发三分钟看完许可LICENSE 为 GPL-3.0 全文1.0 时代用 MIT 许可证2.0 起切换到 GPL v3。二次开发基于 cat-catch 源码做衍生扩展并对外分发需履行 GPL v3 的开源义务——项目立场是希望衍生作品同样保持开源。核心依赖都内联在 lib/ 目录组件负责的事仓库文件hls.js解析 m3u8 播放列表与分片lib/hls.min.jsm3u8-decryptAES-128 加密分片解密lib/m3u8-decrypt.jsmux.jsTS 分片重封装为 MP4lib/mux.min.jsmpd-parserDASH/MPD 清单解析lib/mpd-parser.min.jsStreamSaver.js流式写文件边下边存lib/StreamSaver.jsMQTT.js资源发送到 MQTT 协议lib/mqtt.min.jsjQuery / json-viewer / qrcodeDOM 操作、JSON 查看器、二维码lib/jquery.min.js装之前的两张自查清单内核低于 104 时部分按钮被隐藏属设计行为而非 bugchrome://version查一下再装低于 114 的内核请确保版本在 2.6.3 及以上修复了缺失sidePanelAPI 导致的不可用问题。源码、Releases 包与 Issue 入口都在项目仓库 cat-catch 中克隆命令见上文开发者的源码审计与调试路径一节。【免费下载链接】cat-catch猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考