1赞

74回答

8收藏

抖音web直播数据采集

信息分享 信息分享 11362 人阅读 | 74 人回复 | 2021-08-17


本案例是基于RPC的抖音web直播数据采集。还原protobuf协议的可以参考《抖音web-protobuf》



文章内容仅供参考学习,如有侵权请联系作者进行删除
可采集内容和页面呈现内容相同,包括用户评论、关注、谁来了、送礼物等数据。








RPC(Remote Procedure Call)是远程调用的意思。

在Js逆向时,我们本地可以和浏览器以服务端和客户端的形式通过websocket协议进行RPC通信,这样可以直接调用浏览器中的一些函数方法,不必去在意函数具体的执行逻辑,可以省去大量的逆向调试时间。

像抖音直播间的数据传输采用的是protobuf,如果完全解析的话实在是浪费时间,不适合做案例教程。

还有重要的一点是,通过RPC的方法可以不用搞加密参数signature,开一个页面就可以了。



接口分析
首先通过控制台进行抓包,普通的get请求。有加密参数signature,不过我们不需要搞。






返回的是经过 protobuf 序列化数据。









response里面有关键字 WebxxxxMessage 。









其实全局直接搜message就行






进来接着搜,这里response.decode看起来像,所以断点调试。

其实最拼的就是每个像的地方都断点。






然后调试发现在 var r = s.im[o].decode(n) ,这里返回的解码后的数据。








所以说在这里进行RPC就行。



文件覆盖
首先需要修改和替换它的Js文件,为了方便操作和讲解,我选择通过控制台的Overriders来进行Js文件替换。当然也可以选择通过Fiddler、Mitmproxy等抓包工具替换,或者通过Google的GRPC协议来进行Js内容替换。




在Source中选择Overrides,然后创建一个本地目录。 Enable Local Overrides 需要勾选。









然后在没有格式化的Js文件上右键点击Save for overrides。





接下来就可以进行修改了,将格式化后的代码复制到我们save的文件中,然后ctrl+s进行保存。



RPC调用
接着我们要做的是在一个位置创建一个websocket连接来供我们进行RPC调用。

首先要确定注入位置,我们需要添加的websocket客户端JS代码位置在这个 var r = s.im[o].decode(n) 下面。





代码如下:





不能单纯的在该函数中写入创建客户端,这样会导致死循环,无限创建客户端。所以需要进行代码上的判断,如果已经创建过就不再进行创建客户端。



接下来定义自己的服务端代码就可以进行测试了。 python代码在博客原文中。



运行示例
我没有更进一步的去解析,你可以根据方法名提取对应数据。






为了做一些推广,回复可见的内容是专栏地址,有很多案例,以及该文章的源码。










[ttreply]




https://blog.csdn.net/weixin_43582101/category_9291501.html




[/ttreply]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
分享到:
回复

使用道具 举报

回答|共 74 个

Chris_Nesson

发表于 2021-8-17 10:47:14 | 显示全部楼层

111111
回复

使用道具 举报

dada0623

发表于 2021-8-17 11:02:13 | 显示全部楼层

牛哇牛哇
回复

使用道具 举报

nanxun

发表于 2021-8-17 11:09:20 | 显示全部楼层

111
回复

使用道具 举报

smart

发表于 2021-8-17 11:28:30 | 显示全部楼层

111
回复

使用道具 举报

dong

发表于 2021-8-17 12:07:33 | 显示全部楼层

ok
回复

使用道具 举报

17630224152

发表于 2021-8-17 14:22:40 | 显示全部楼层

111
回复

使用道具 举报

xxr

发表于 2021-8-17 14:37:31 | 显示全部楼层

牛蛙牛蛙
回复

使用道具 举报

pancake666

发表于 2021-8-17 17:03:34 | 显示全部楼层

666
回复

使用道具 举报

Lw

发表于 2021-8-19 14:17:17 | 显示全部楼层

66
回复

使用道具 举报