1.首先找一个人少的直播间测试
2.进入直播间过一段时间,抓包发现一直在向两个接口持续发送请求
编辑
batch/为日志接口
/webcast/im/fetch/该接口响应的内容乱码,但根据经验推测为弹幕接口
编辑
编辑
msToken在cookie中可以找到,那么就剩下X-Bogus和_signature,经测试_signature并不校验,目前某主流短视频很多接口都不校验_signature(此时-12-11)。X-Bogus和url中的其他参数(包括msToken)缺少一个请求时都会返回空,那么就要搞定这个X-Bogus值
3.全局搜索X-Bogus,很容易就找到位置,可以看出这里的js做了ob混淆
编辑
打上断点,发现依然在请求该接口但未被断点断住,打上XHR断点断住后在控制台直接调用该函数
编辑
虽然返回了值,但是该X-Bogus和抓包看到的X-Bogus明显不同,且无法知道实际传参。
初步推测该函数生成的X-Bogus已被弃用,留在这是为了混淆的。后经无数次测试调试最后找到了实际生成X-Bogus的函数,函数调用还是比较复杂的,而且我不会反混淆,只能硬着头皮看。甚是折磨
编辑
可以看到其格式和抓包得到的X-Bogus一致
4.扣代码,补环境
编辑
本地使用nodejs成功生成X-Bogus,每次生成的值都不一样,内部应该有时间戳参与加密,有兴趣的小伙伴可以接着逆向内部算法。
5.直播弹幕接口
最后来调用直播弹幕接口,抓包复制拿来的参数可以再次请求,但过一段时间就会返回空,X-Bogus有一小段生命周期.
使用execjs调用js得到X-Bogus传入请求成功
编辑
除了X-Bogus还需要注意三个值internal_ext,cursor,last_rtt
第一次请求时internal_ext=,cursor=0,last_rtt=-1,然后返回的结果中可以找到internal_ext和cursor,last_rtt没有找到,这里是给的随机值
编辑
等待1秒后继续请求,如此循环。每次seq都会递增则正常。
虽然能正常请求到数据,但是返回的值还需要进一步解析,比如某某人来到直播间会显示{0.user}来了,送礼会显示{0:user}送给{1}{2}个{3:gift}
编辑编辑
有兴趣的大佬可以做进一步的解析。
该js代码中也找到了生成_signature的函数,应该是最新版(-12-11),但旧版的_signature也可使用,网上有大量的文章介绍,而且该接口并不校验_signature,这里就不做赘述了。
编辑
该文章仅做技术交流用途,如有侵权违规请联系本人即刻删除!
交流v:yok3ke