bilibili通过弹幕查询用户
弹幕获取
首先通过视频aid获取cid
视频的aid又称av号,是视频url中av后面的一串数字 https://www.bilibili.com/av67289687
67289687就是这个视频的aid
使用aid去请求这个api https://api.bilibili.com/x/web-interface/view?aid=${aid}
即可得到cid
通过cid获取视频弹幕信息
拿到cid以后请求这个api可以得到弹幕信息,xml格式。 https://api.bilibili.com/x/v1/dm/list.so?oid=${cid}
文件转码
应为返回的xml弹幕文件的content-encoding为deflate,需要用到zlib来解压。
解码用户id
b站弹幕是这样的形式
1 | <d p="53.87100,1,25,16777215,1562172618,0,13ba9291,18366041035898882">艾欧尼亚</d> |
d标签值是弹幕内容,属性p里面依次是弹幕的出现时间,模式,字体大小,颜色,发送时间戳,弹幕池,用户Hash,数据库ID
其中要用的是用户Hash。用户Hash只是简单的把数字ID用ITU I.363.5算法进行了Hash。
有两种方法把用户Hash转成uid
- 使用第三方接口
1 | https://biliquery.typcn.com/api/user/hash/用户Hash |
- 自给自足
我这里有一个例子,借鉴了bilibili-helper
1 | const Crc32Engine = require('./crc32'); |
访问用户主页
1 | https://space.bilibili.com/uid |