一个app直播间的弹幕获取术

有干货!

        老早之前做了一个直播APP(柚子)直播间弹幕的获取,趁着闲暇写一下逆向过程。此APP需登录后才能进入直播间!

1、先抓包

        登录账号后去抓进入直播间的包,多进入几个直播间,你会发现进入直播间都会出来这个包:

一个app直播间的弹幕获取术_第1张图片

每次进入直播间都会进行一次ws请求,那么有理由怀疑,进入直播间是通过tcp协议做的。

2、逆向APK源码

        将apk拖入jadx,根据经验我们直接查找sendMessage关键词(ws通过sendMessage发送协议数据),不出所尿~,找到了:

一个app直播间的弹幕获取术_第2张图片

        既然找到了,那么就通篇读一下PlayerMessageManager类的代码,你会发现这些东西:

一个app直播间的弹幕获取术_第3张图片

AndWebSocket、DanmuBean....确定是ws管理类及弹幕获取入口没跑了,当然也可以进一步hook确定。

在类中我们发现获取PlayerMessageManager实例的函数:

一个app直播间的弹幕获取术_第4张图片

传入的参数有一个LoginInfoEntity对象,点进入看看,发现是用户登录的一些信息:

一个app直播间的弹幕获取术_第5张图片

这时,我们抓下登录接口的数据,需要的信息都在返回数据里面:

一个app直播间的弹幕获取术_第6张图片

3、写代码

        我们把PlayerMessageManager及关联的类直接扣下来,然后发送建立ws链接并发送请求看看:

一个app直播间的弹幕获取术_第7张图片

通过ws发送数据后只返回了一个encKey,跟踪代码后发现,还需要根据此encKey获取到roomLimit然后再次发送给服务器:

一个app直播间的弹幕获取术_第8张图片

这样就能顺利的获取到弹幕数据了,结束!

一个app直播间的弹幕获取术_第9张图片

此app逆向较为简单,个别key在so层,不过获取并不困难。我的vx:YY_yhzf

你可能感兴趣的:(机器人,直播人气,直播间协议,柚子直播协议,直播间弹幕,柚子协议)