1.2.房间信息和弹幕认证服务器获取
首先我们拿随便一个主播房间来说,比如,qiuri
Ta的房间链接分为两种
对这个主播房间页面请求,正常,所有的有用信息都不是放在HTML中渲染出来,而是有一条放在HTML中内置的JS脚本中,这是为了减少服务器渲染HTML的压力?可是渲染放在JS里面不也一样需要渲染?(不明白)总之,就是程序先加载没有具体数据填充页面,然后JS更新数据。
内置的两段JS脚本,JS脚本中有两个变量,该变量很容易转换成JSON数据,也就是两段JSON数据,一个是关于主播的个人信息,另一个是关于弹幕认证服务器的列表(该列表中的任意一个服务器均可以认证,但每一次请求主播页面得到的认证服务器列表都不一样)
Sc
Screen Shot 2016-02-09 at 1.01.51 PM.png
Screen Shot 2016-02-09 at 12.44.01 PM.png
通过这步,我们就拿到了主播的信息以及弹幕服务器的认证地址,端口。
1.3.发送Socket消息的流程简介
我们通过抓包,分析那一大坨数据包,可以确定以下通过以下的流程便可以获取弹幕消息。(分析过程比较繁琐)
首先建立两个Socket。一个用于认证(@danmu_auth_socket),另一个用户获取弹幕(@danmu_client)。
-
步骤1: @danmu_auth_socket 发送消息登陆,获取消息1解析出匿名用户的用户名,再获取消息2解析出gid
-
步骤2: @danmu_auth_socket 发送qrl消息,获取两个没有什么用的消息
-
步骤3: @danmu_auth_socket 发送keeplive消息
-
步骤4: @danmu_socket 发送伪登陆消息(所有匿名用户都一样只需要输入步骤一中用户名就行了,因为认证已经在上面做过了)
-
步骤5: @danmu_socket 发送join_group消息需要步骤一中国的gid
-
步骤6: @danmu_socket 不断的recv消息就可以获取弹幕消息了
后面会详细解释