B站登录及直播弹幕发送实现

Viewer:501目录 代码

前段时间做了个直播的点歌机,然后发现别人点歌却因为直播延迟得不到回应,有的就走了,然后看到B站官方音乐台的机器人,就想着自己也做一个玩玩。

1.准备工作

依旧是无聊的查接口时间,先打开任意一个网页直播间,按F12调出开发者控制台,然后发送一条弹幕

很容易就看出来提交的方式和需要提交的数据,其并未加密,所以说我们可以直接处理一下来得到最简化的版本,在提交的时候需要与Cookie一起发送,这样就需要着手处理登录部分了。

1.1.登录部分处理

由于B站在网页账号密码登录的部分加了验证码,滑动验证码,这方面还没有好的办法进行处理,所以转身看看B站的二维码扫码登录

同样点击登录,等待网页加载完毕后按F12开发者控制台,然后点击二维码登录,看到提交了一条Get请求,请求地址如下

https://passport.bilibili.com/qrcode/getLoginUrl

然后它的返回信息是这样

{"statue":true,"ts":1529716902,"data":{"url":"https://passport.bilibili.com/qrcode/h5/login?oauthKey=a0032e4adf5c5aa48b4a59065ec2d863","oauthKey":"a0032e4adf5c5aa48b4a59065ec2d863"}}

到这里,第一次处理的人还可能不知道该怎么用,那么接着扫描B站网页上给出的二维码,结果如下

https://passport.bilibili.com/qrcode/h5/login?oauthKey=a0032e4adf5c5aa48b4a59065ec2d863

到这里就清楚了,B站给出的二维码的访问地址就是上面的返回信息的URL,如何验证是否登录?很简单,在我们上一步获取二维码之后,B站的登录页面就开始循环请求一个地址,所以我们可以肯定循环请求的地址就是检查是否扫码成功的接口,它请求的URL是:https://passport.bilibili.com/qrcode/getLoginInfo,其用Post方式提交了一个oauthKey,就是上面Get请求的返回内容中的oauthKey,提交数据是oauthKey=3873f88977e94c6a96bb3805ef636c1b,请求发现其一共有三种状态:未扫描,未确认,和确认成功,确认成功的返回消息为

{"status":true,"ts":1529716057,"data":{"url":"https://passport.biligame.com/crossDomain?DedeUserID=4911q405&DedeUserID__ckMd5=548f081qwdqw9e0f776ed&Expires=2592000&SESSDATA=7fe30be8%2C153sfgasf2308057%2C41fda1f5&bili_jct=a9df9e2f67sdqw31a7e8aafb6b1qwdgqa4f099120&gourl=http%qd3A%2F%2Fwww.bilibili.com"}}
提示:已经做无效化处理↑

返回信息的URL内已经包含我们所需要的Cookie,直接将URL剔除,取出剩余信息即为我们需要的Cookie,直接可以使用

2.弹幕发送

弹幕发送非常简单,post将数据按照下面的格式提交到http://live.bilibili.com/msg/send就可以实现直播间的弹幕发送,记得加上上面方法的Cookie一起提交,否则会提示需要登录

color=16777215&fontsize=25&mode=1&msg=(URL编码的弹幕内容, 不带括号)&rnd=(Unix时间戳,不带括号)&roomid=(房间号,不带括号)

暂无评论

发表评论