直播弹幕抓取逆向分析流程总结 websocket,flash

前端无秘密前端

 

直播的逆向抓取说究竟是前端的调试和逆向技术,加上部分的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更安全,这倒不全是技术上的优势,市场方面,一项技术从业人员越少,逆向成本越高

非专业逆向人员,技术有限,认知只限于此,如有误欢迎指出

相关文章
相关标签/搜索