最近在做工业视频数据采集工具开发,对接某垂直视频平台时碰到了硬骨头:抓包拿到的FLV播放地址全是加密后的字符串,直接发起请求要么返回403,要么下载下来的文件无法正常解码播放。一开始以为只是普通的签名校验,补个Referer和Cookie就能解决,折腾了三天才发现,对方是直接对视频路径做了对称加密,核心解密逻辑藏在重度混淆的播放器JS里,连密钥都是动态生成的。前后连调试带逆向搞了快一周,总算是把完整解密流程跑通了,单次解密成功率基本稳定在100%,批量采集场景也能持续稳定运行。这篇文章就从抓包定位开始,一步步拆解加密算法、还原解密逻辑,再到Python代码复现,中间踩过的所有坑也一并整理出来,给做同类需求的朋友省点调试时间。一、定位入口:加密地址到底是怎么生成的1.1 抓包初步分析打开浏览器开发者工具,切换到Network面板,刷新页面后点击播放按钮,过滤flv关键词就能看到视频流请求。仔细观察URL结构会发现,路径部分不是正常的视频文件名,而是一串类似Base64的不规则字符串,尾部还跟着txSecret、txTime这类签名参数。直接复制完整URL用Postman请求,要么直接返回403禁止访问,要么下载下来的文件体积不对、播放器无法识别。这就排除了单纯签名校验的可能,基本可以判定:视频地址本身是加密状态,浏览器在播放前会先在前端解密成真实路径。1.2 定位解密函数光看请求没用,必须找到前端的解密逻辑。这里分享两个效率最高的定位方法: