标题: 猫抓插件应用一例 创建: 2025-09-10 10:19 更新: 2025-09-11 16:10 链接: https://scz.617.cn/web/202509101019.txt 测试用例 aHR0cHM6Ly93d3cuZXB1Yml0LmNvbS8NCmh0dHBzOi8vd3d3LmVwdWJpdC5jb20vY291cnNlUG xheT9pZD0yYTUyMDhkODU0ZGU0MWMxYTU1ZDUzNWM0ZTFiMDIzMyZjb3Vyc2VDb2RlPVBDQzcy MzY5Y2QwZWI5ZTcmY291cnNlSWQ9ZTJhOGMxMGE3Y2RkNGFlY2FkNzE1Yzc0ZjkyYWI3ZTAmdG FnSWQ9YmRkN2I2ODMtMjVmYi00ODRhLTgyYWEtMjBkYmRjNGRlNDk1DQpodHRwczovL3ZvZDB2 d2thcHU0LnZvZC4xMjYubmV0L3ZvZDB2d2thcHU0L2VuY3J5cHRfTDdPdzZZdXRfMzEyNjE0OT U5Nl9oZF9lbmNyeXB0LmZsdg== 这是个视频课程,用猫抓能看到flv下载链接,但encrypt_*_hd_encrypt.flv是加密过 的,从文件名就能看出来。 F12 Network看到扎眼的getKey F12 Ctrl-Shift-F搜索"transferKey",无js混淆,能看到一些相关信息,比如: -------------------------------------------------------------------------- /* * AES解密来自服务端的transferKey,AES密钥来自nonce,nonce可能源自getKey请 * 求数据 */ var i = this._decryptInfo , n = i.transferToken.match(/&time=([0-9]+)/)[1] , a = i.transferToken.match(/&nonce=([0-9a-zA-Z]+)/)[1]; a.length >= 16 ? a = a.slice(0, 16) : a += "0123456789012345678".slice(0, 16 - a.length); var s = m.enc.Base64.parse(i.transferKey).toString() , o = m.enc.Utf8.parse(a) , u = m.enc.Hex.parse(s) , c = m.enc.Base64.stringify(u) , l = null; try { l = m.AES.decrypt(c, o, { mode: m.mode.ECB, padding: m.pad.Pkcs7 }).toString() } catch (v) { console.error("错误: ", v) } -------------------------------------------------------------------------- /* * 解密后的transferKey是RC4密钥,可能用于解密flv */ this._decryptKey || (this._decryptKey = this._decryptTransferKey()); var i = m.enc.Hex.parse(this._decryptKey) , n = new Uint8Array(e,t,r) , a = m.enc.u8array.parse(n); a = a.toString(m.enc.Base64); for (var s = m.RC4.decrypt(a, i), o = m.enc.u8array.stringify(s), u = 0; u < n.length; u++) n[u] = o[u] -------------------------------------------------------------------------- 理论上调试分析js可找出解密flv的工程细节。 网友heyi提供一个简单下载明文视频的办法,用猫抓插件,不要直接下flv,而是捕 获播放中的视频数据,这是明文数据。 下面介绍具体操作。先选好视频清晰度,后续操作不要切换视频清晰度。本例目标网 站匿名只允许标清,登录后才允许高清。点击"缓存捕捉/Capture/Capture cached content",将重新加载视频页面。在猫抓界面中勾选"完成捕获自动下载/Automatic download"。在视频页面中点击播放,观察底部视频流预加载进度条。目标视频不是 一次性预加载完,会分段预加载,实际播放进度滞后于预加载进度。不必被动等待播 放进度,可主动点击预加载进度。多次重复前述步骤,直至视频尽头。结束时,猫抓 弹框,提示保存mp4,已是明文视频。在此之前,我未碰上过必须"缓存捕捉"的场景, 原来此操作可对付部分加密场景啊。 很多网站开始使用音频和视频分离的播放技术,本例缓存捕捉到的数据就是音、视频 分离的,这是正常现象。缓存捕捉完成时,浏览器会弹框提示 -------------------------------------------------------------------------- 允许多个文件下载 / Download multiple files 允许 禁止 / Allow Block -------------------------------------------------------------------------- 要选"允许/Allow"。保存完mp4后,猫抓继续弹框,提示保存mp3,这是配套音频。 本例中的mp3用到HE-AAC,而非普通AAC。官方Windows预编译版ffmpeg(比如gyan.dev、 BtbN)、MPC-HC均不支持HE-AAC,播放some.mp3时,有嗡嗡声、杂音等。但Win10自带 的Windows Media Player支持HE-AAC,可正常播放some.mp3。 若想合并本例的音、视频,需要--enable-libfdk-aac的ffmpeg。 ffmpeg -v quiet -codecs | findstr libfdk ffmpeg -i some.mp4 -codec:a libfdk_aac -i some.mp3 -c:a aac -b:a 128k some_full.mp4 ffmpeg -i some.mp4 -codec:a libfdk_aac -i some.mp3 -c:a libfdk_aac -profile:a aac_low -b:a 128k some_full.mp4 若不涉及HE-AAC,一般合并命令是 ffmpeg -i some.mp4 -i some.mp3 -c copy some_full.mp4 猫抓插件提供wasm版在线ffmpeg,不依赖Native OS中的ffmpeg。启用时,将下载约 30MB的wasm到浏览器进程空间,在内存中完成ffmpeg相关动作,这个功能高级啊。 wasm版在线ffmpeg居然支持HE-AAC,神奇。受WebAssembly技术限制,也受浏览器和 内存大小的限制,目前只能合并小于2GB的视频,再大必须下载后用本地工具合并, 参前。 可在猫抓界面中勾选"使用ffmpeg合并/using ffmpeg",缓存捕捉完成时,将自动使 用wasm版在线ffmpeg合并音、视频,最终下载合并后的mp4。 本例若不合并音、视频,mp4无声。 猫抓插件在Chrome、Edge中都有相应版本,搜"cat-catch"。更多使用说明参看 https://cat-catch.bmmmd.com/