bilibili-API-collect/live/info_flow.md
MineCreeper86 cd410bb56d 格式化
2020-08-31 16:37:38 +08:00

4.3 KiB
Raw Blame History

直播间信息流

数据包格式

数据包为websocket格式为头部数据+正文数据

操作流程:

发送认证包->接收认证包回应->接收普通包&每30秒发送心跳包->接收心跳回应)

头部格式:

偏移量 长度 类型 含义
0 4 uint32 封包总大小(头部大小+正文大小)
4 2 uint16 头部大小一般为0x001016字节
6 2 uint16 协议版本:
0普通包正文不使用压缩
1心跳及认证包正文不使用压缩
2普通包正文使用zlib压缩
8 4 uint32 操作码(封包类型)
12 4 uint32 sequence可以取常数1

操作码:

代码 含义
2 心跳包
3 心跳包回复(人气值)
5 普通包(命令)
7 认证包
8 认证包回复

认证包

方式:(上行)

连接成功后5秒内发送否则强制断开连接

正文:

json格式

字段 类型 内容 备注
uid num 用户UID 不可为0
roomid num 加入房间的ID
protover num 协议版本 现在是2
platform str 平台标识 可为"web"
clientver str 客户端版本 现在是"1.10.3"
type num 必须为2
key str 认证秘钥

示例:

00000000  00 00 00 f0 00 10 00 01  00 00 00 07 00 00 00 01  |................|
00000010  7b 22 75 69 64 22 3a 32  39 33 37 39 33 34 33 35  |{"uid":293793435|
00000020  2c 22 72 6f 6f 6d 69 64  22 3a 32 31 36 38 36 32  |,"roomid":216862|
00000030  33 37 2c 22 70 72 6f 74  6f 76 65 72 22 3a 32 2c  |37,"protover":2,|
00000040  22 70 6c 61 74 66 6f 72  6d 22 3a 22 77 65 62 22  |"platform":"web"|
00000050  2c 22 63 6c 69 65 6e 74  76 65 72 22 3a 22 31 2e  |,"clientver":"1.|
00000060  31 30 2e 33 22 2c 22 74  79 70 65 22 3a 32 2c 22  |10.3","type":2,"|
00000070  6b 65 79 22 3a 22 43 6f  4b 68 5f 61 49 46 42 6c  |key":"CoKh_aIFBl|
00000080  51 32 4c 57 77 64 79 4e  43 6b 2d 69 5f 42 76 72  |Q2LWwdyNCk-i_Bvr|
00000090  64 72 72 55 4d 32 78 57  6c 74 62 35 77 6b 54 50  |drrUM2xWltb5wkTP|
000000a0  4e 72 44 55 49 2d 73 46  32 41 56 56 4f 44 78 43  |NrDUI-sF2AVVODxC|
000000b0  52 42 39 69 64 76 74 34  46 32 4d 50 31 45 4a 6c  |RB9idvt4F2MP1EJl|
000000c0  4d 68 49 57 6b 31 5a 69  73 67 6e 32 67 67 66 6c  |MhIWk1Zisgn2ggfl|
000000d0  68 72 65 6e 4f 4b 65 39  7a 56 65 6d 78 35 7a 5f  |hrenOKe9zVemx5z_|
000000e0  5a 4d 43 61 55 77 4c 31  65 70 6d 7a 5a 53 22 7d  |ZMCaUwL1epmzZS"}|

认证包回复

方式:(下行)

在认证包发送成功后就会收到

json格式

字段 类型 内容 备注
code num 返回值 0认证成功

示例:

00000000  00 00 00 1a 00 10 00 01  00 00 00 08 00 00 00 01  |................|
00000010  7b 22 63 6f 64 65 22 3a  30 7d                    |{"code":0}|

心跳包

方式:(上行)

30秒左右发送一次否则60秒后会被强制断开连接

正文:

特定字符

[object Object]

示例:

00000000  00 00 00 1f 00 10 00 01  00 00 00 02 00 00 00 01  |................|
00000010  5b 6f 62 6a 65 63 74 20  4f 62 6a 65 63 74 5d     |[object Object]|

心跳回应(人气值)

方式:(下行)

在心跳包发送成功后就会收到

正文:

uint32整数代表房间当前的人气值

示例:

00000000  00 00 00 14 00 10 00 01  00 00 00 03 00 00 00 01  |................|
00000010  00 00 14 83                                       |....|

可见房间内人气值为5251人

普通包

方式:(下行)

弹幕

送礼

欢迎加入房间

欢迎房管加入房间

系统消息

主播准备中

直播开始

直播状态更新