十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

猫抓 Cat-Catch:一个资源嗅探浏览器扩展的四个关键设计决策

猫抓 Cat-Catch:一个资源嗅探浏览器扩展的四个关键设计决策 猫抓 Cat-Catch一个资源嗅探浏览器扩展的四个关键设计决策【免费下载链接】cat-catch猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch猫抓 Cat-Catch 是一个开源的浏览器扩展核心工作是资源嗅探拦截网页发出的媒体请求把视频、音频、m3u8 流变成可下载的文件。下面挑出它演进中的几个关键决策看看这类扩展到底难在哪。它到底能做什么资源嗅探被动监听页面发出的媒体请求视频、音频、直播流链接直接列在弹出面板里不用手动找右键另存为。m3u8 / MPD 多协议解析不只是能抓到地址还能在线把 HLS、DASH 分片合并成单个 MP4支持 HEVC/H265 预览2.6.2 起和 EXT-X-BYTERANGE 这类复杂结构的合并下载2.6.8 起。WebRTC 录制2.4.9 起提供录制脚本针对走 WebRTC 推送、普通嗅探拿不到完整流的场景兜底。深度搜索与缓存捕获主动从页面数据里找疑似密钥和缓存中的媒体数据解决嗅探不到的情况。跨浏览器Chromium 系Chrome/Edge 等与 Firefox 双 manifest 构建Firefox 128 以上可用 V3 版脚本功能2.5.7 起。从 V2 到 V3一次被迫但成功的架构升级Manifest V3 最大的变化是后台从常驻页面变成了 Service Worker。Service Worker 空闲 5 分钟就会被浏览器终止而猫抓的嗅探数据存在后台的内存里——被杀掉一次当前页面捕获的数据就全丢了。2.0.0 版本的处理办法是心跳保活前端页面与后台维持一条长连接端口后台每隔一段时间收到消息就重置空闲计时同时用定时器主动断开避免连接挂死。核心思路用伪代码表示runtime.onConnect(port { if (port.name ! HeartBeat) return; const t setInterval(() port.disconnect(), 250000); // 4分10秒后主动断开 port.onMessage(() { /* 收到心跳Worker 继续存活 */ }); port.onDisconnect(() clearInterval(t)); });配合每 25 秒调用一次平台接口这类小动作后台得以长期存活。CHANGELOG 里 2.0.0 的措辞很诚实继续用肮脏的手段对抗 Manifest V3。这个方案的代价是它依赖浏览器的实现行为属于 workaround未来浏览器收紧策略时需要跟着改。与之配套的第二个决策在 2.5.3 版本把嗅探数据的存储从storage.local迁到storage.session要求 Chrome 104。原因很直接——嗅探数据是高频读写、用完即弃的运行时缓存走磁盘持久化的 local 会产生大量无谓的 IO还出现过因 IO 错误导致扩展不可用的问题。对比项storage.localstorage.session存储位置磁盘持久化内存关闭浏览器即清空读写开销有磁盘 IO高频写易出错内存读写速度快适合数据用户设置等低频数据嗅探到的媒体列表设置类数据仍留在 local运行时数据走 session各归其位。心跳机制的源码可以直接看 js/background.js。多协议流媒体处理从能抓到到能下完m3u8 下载的典型问题是播放列表本身很小真正的体积在成百上千个 ts 分片里分片往往要求带 Referer 才能访问有些 URL 是一次性的直播流则根本没有终点。约束在于并发不是越多越好。32 线程看着猛但会撞上单页请求并发上限、触发站点限流内存里同时堆积的分片数据也会急剧膨胀对后台 Worker 是实打实的压力。猫抓在 2.4.7 把默认最大下载线程调到 6属于够快且稳的折中下载失败的分片由重试逻辑补位2.7.1 起自动重试而不是整单失败。取舍还体现在内存上限上。2.5.9 版本限制每个页面最多存 9999 条资源——这不是随便定的数字而是承认嗅探数据只保留最近一段无限增长的资源列表既撑爆存储也让面板渲染变卡。宁可丢弃更早的记录也要保证扩展不卡死。解析器整体逻辑在 js/m3u8.js 中界面如下跨浏览器与安全性被低估的工程细节猫抓同时维护manifest.jsonChromiumV3 service_worker和manifest.firefox.jsonFirefox 长期用 V2 的 scripts 加载模式2.5.7 才升到 V3同一套js/目录的代码在两种加载模式下复用靠js/polyfill.js这类垫片补齐browser/chrome命名空间差异。这意味着 Firefox 版在低版本上功能集天然少一截比如深度搜索脚本要 128这是双引擎架构绕不开的妥协。安全侧的处理比较克制脚本注入与页面 DOM 交互时做了 XSS 防护Trusted Types 思路不在文章里展开更值得注意的是 2.5.9 引入的网站屏蔽功能——用户可配黑名单不希望扩展在这些网站运行或反转为白名单2.6.5 又加了响应部分站点要求的全局强制屏蔽列表。嗅探工具天然有越界风险把开关交回用户并默认尊重对方站点意愿是这类项目少见的技术伦理自觉。上手指南3 分钟把猫抓用起来在 Chrome Web Store 或 Firefox Add-ons 商店搜索猫抓Cat-Catch并安装打开目标媒体页面播放一次视频让请求正常发出点击工具栏扩展图标在弹出面板的资源列表中查看捕获结果可按大小、时长筛选普通文件直接点下载m3u8 资源点面板里的 m3u8 图标进入解析器设置线程数、选择分片范围后合并下载下载失败的资源可点重试或打开设置页核对 Referer、UA 等请求头配置需要后台长期抓取的可在设置里启用侧边栏模式并配置自动下载文件名模板。局限与后续值得关注的方向⚠️只覆盖 Chromium 与 FirefoxSafari 无支持计划DRM 加密内容基本无解加密 m3u8 只能靠手动填入密钥尝试版权保护内容不适合用它心跳保活依赖浏览器当前对 Service Worker 的容忍度属于 workaround浏览器策略收紧时功能可能受损。后续方向上社区已经在 2.6.4 引入了 MQTT 协议支持为数据同步、远程触发等云端玩法留了口子也有人讨论过 AI 辅助识别媒体资源但目前仍停留在设想阶段暂无明确时间表。结语猫抓 Cat-Catch 的价值在于嗅探这类灰色地带工具靠的是对边界条件的逐一处理而不是功能堆砌。【免费下载链接】cat-catch猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表