前言
b站近期更新了弹幕接口返回的数据结构,我通过逆向JS代码进行研究,下面是研究成果。
API调用
GET https://api.bilibili.com/x/v2/dm/web/seg.so
参数:
键 | 值 |
---|---|
oid | 分P编号,也称为cid |
type | 1 |
segment_index | 1 |
返回
请求正确:二进制数据流,需要解析后才能查看。
请求错误:JSON格式,结构是b站标准API数据结构。并附有错误信息。
返回数据流解析
应进行逐个字节解析。数据包以单条弹幕为单位。
以下面的数据为例:
0a45088780e0cdd4add64610ba011801201928ffffff07320831366333653632303a03e5a5bd40a38cb1fc05480162113339373836323937363339333035323233709fdaedba020a48088580a0a0c5aed64610ba011801201928ffffff07320831366333653632303a0632333333333340dd8cb1fc05480462113339373836333237383737303931333333709fdaedba020a53088380c0fed78fe94610c7ec021801201928ffffff073207343536623964333a12e783ad2020e8a1802020e6b2b82020e885be408edabafc0548076211333938363838333036333834303736383370fede99540a4e08838080e5e1c9ea4610ab89021801201928ffffff07320831333263353138643a0ce8bf99e4b99fe8a18cefbc8140b1b9bbfc054805621133393837353232343138303632313331357099a394090a45088580a093ff8db44710b881011801201928ffffff07320837616236656565653a026e6240b98ce1fc0548036211343031393836323539313937363234333770a6adccf8010a45088780a0fcb7fabb4710b199011801201928ffffff07320833323865356634333a026e6240dc8ee5fc05480562113430323333313338333439363730343037709feedfac020a57088580e0ddecb3bf471093b8031801201928ffffff07320833373032356533643a15e5bbbae8aeaee5869be8aeade694bee8bf99e9a69640dcf0e6fc05480162113430323438333035313537343036373235708f928230
数据太长了,我拆其中一条弹幕数据出来:
0a
45
08 8780e0cdd4add646
10 ba01
18 01
20 19
28 ffffff07
32 08 3136633365363230
3a 03 e5a5bd
40 a38cb1fc05
48 01
62 11 3339373836323937363339
// 这一段不知道什么意思,我逆向JS后看官方也没有解析这段。
333035323233709fdaedba02
0x0a
标识接下来的数据是单条弹幕。
紧接着的 0x45
标识数据主体长度,即后面的数据总长度。
接下来就是数据主体。第一个字节是数据类型,如0x08
。
这里要注意,所有