前端无秘密前端
直播的逆向抓取说究竟是前端的调试和逆向技术,加上部分的dpa(深刻包分析,我的能力尚做不到深刻,只能做简单分析)难度较低java
目前互联网直播弹幕主要是两种技术实现。node
1websocket消息通讯,js拿到消息再处理到dom中,逆向验证流程,和服务端创建链接后便可,逆向难度较低,消息分明文和加密两种状况,前端无秘密,加密也能找到解密的js代码。如此实现可直接用nodejs,js相关代码通用,一个比较大的坑是服务端websocket版本不同,所需依赖socker.io包的版本也不同,要经过各类蛛丝马迹来最终肯定版本。nginx
2flash,逆向难度较高,目前纯nodejs后台项目做不到(不支持加载flash文件)web
flash支持加载swf文件浏览器功能,swf文件相似为js的依赖包,一个模块,swf实现功能,js引用swf文件,调用api来做上层,js和swf的关系,相似c和汇编编译的包,scala和java编译的jar包的关系。api
swf包是能够反编译看源码的浏览器
示例工具如 https://www.free-decompiler.com/flash/download/安全
这又有两种状况websocket
1swf只负责消息通讯功能(和websocket的定位相似)内部实现消息的发送和接收,对外公开api,js经过这层api拿数据,js再做数据展现。这种相对简单,在浏览器内部(或其余支持flash的环境),注入js代码,加载swf模块,注册回调便可接收弹幕数据。dom
2swf不和js交互,彻底封闭,flash自己就负责视频流的处理播放,部分网站,弹幕的处理,彻底不通过dom,直接由swf处理放到视频流中。
1和2的区别就在于,swf是否显示公开了弹幕消息的处理api,提供了好说,不提供的话考虑成本和可行性,基本毫无办法。
可操做的思路有两个,说白了是一个(由于都要深刻分析swf的源码)
我的也没有尝试过,不保证可行,只是思路
1或许swf实现了,只是没有显示的经过js调用,反编译 swf 文件,找出这个api,这种概率不大,纯碰运气。
2抽取处理逻辑,修改代码,公开消息api(或经过其余方式暴露消息,打日志?),编译替换原swf文件。
注入新swf应该不难,做移动端调试时用过fiddler,mac上抓包的charles应该都有现成方案,实在不行,还有老办法,nginx主路流量劫持,以前只劫过 http 的,https 的却是没试过,可能须要证书按中间人攻击的思路去做。
swf以actionscript编写,我的并无相关开发和调试经验,前端逆向依赖的前端调试技术,只能停在js层面,对swf彻底无力可施,目前我的只能经过查看swf源码,对照js代码做分析。
而actionscript和flash 即将终止支持,非必要,实在不肯在其上浪费时间。
如此操做成本很高 基本思路是
1 定制 actionscript 文件,公开一个外部api,暴露须要的数据,编译为 swf 文件
2 注入swf文件
3 js 访问 swf 暴露出的 api,获取须要数据
直播弹幕仍是用flash更安全,这倒不全是技术上的优势,市场方面,一项技术从业人员越少,逆向成本越高
非专业逆向人员,技术有限,认知只限于此,如有误欢迎指出