bilibili-api icon indicating copy to clipboard operation
bilibili-api copied to clipboard

【漏洞】一些直播间方法中仍使用room_display_id作为参数而非真实room_id

Open boxie123 opened this issue 3 years ago • 5 comments

模块路径: bilibili_api.live


https://live.bilibili.com/3010,id实际上为8633637


建议解决方法:

直接向https://live.bilibili.com/{room_display_id}发送Get请求,在resp中存在真实room_id

boxie123 avatar Oct 16 '22 08:10 boxie123

尤其对于数字比较小的room_id,好像是靓号什么的😕

boxie123 avatar Oct 16 '22 08:10 boxie123

问题更正:

我看到live.py中通过更好的方法实现了获取真实id,但是在一些方法中仍使用room_display_id作为参数,比如send_danmaku等。

boxie123 avatar Oct 16 '22 09:10 boxie123

没有问题啊!

Nemo2011 avatar Oct 17 '22 10:10 Nemo2011

在一些方法发送的参数中,roomid仍然使用的url中表观id,并未采用真实id,如live.py中第416行

boxie123 avatar Oct 17 '22 13:10 boxie123

这并不会导致报错,但使用时实际上弹幕并未发送到指定直播间。

boxie123 avatar Oct 17 '22 13:10 boxie123

from bilibili_api import live, sync, Danmaku, Credential

room = live.LiveRoom(url 上的房号, credential = Credential())
sync(room.send_danmaku(Danmaku("")))

可以正常发弹幕的啊,如果没有发出来的话,我试一下那个房号。

Nemo2011 avatar Oct 18 '22 09:10 Nemo2011

比如最上面写的3010直播间。

问题在于,发送弹幕的请求参数中,roomid需要是真实id,而不是表观id。

boxie123 avatar Oct 18 '22 09:10 boxie123

[系统]:主播对用户等级 UL.1 以下的用户开启了禁言

Nemo2011 avatar Oct 18 '22 12:10 Nemo2011

这应该就是发了弹幕也看不见的原因

Nemo2011 avatar Oct 18 '22 12:10 Nemo2011

其他直播间我试过,如果一切正常,可以发出弹幕,我也都能看到。

Nemo2011 avatar Oct 18 '22 12:10 Nemo2011

并不是,将roomid换成真实id后可以正常发送

boxie123 avatar Oct 18 '22 12:10 boxie123

简单地说就是

room = live.LiveRoom(8633637, credential)

中,第一个参数必须填真实房间id,也就是8633637才能发送,填写表观id3010则无法发送

boxie123 avatar Oct 18 '22 12:10 boxie123

好像确实啊,谢谢提醒。3010下我是没有报错的,8633637时:```bilibili_api.exceptions.ResponseCodeException.ResponseCodeException: 接口返回错误代码:-403,信息:主播对UL 1以下开启了禁言,等待主播解除~。 {'code': -403, 'data': {'mode_info': {'mode': 0, 'show_player_type': 0, 'extra': '{"send_from_me":true,"mode":0,"color":16777215,"dm_type":0,"font_size":25,"player_mode":1,"show_player_type":0,"content":"test","user_hash":"832284837","emoticon_unique":"","bulge_display":0,"recommend_score":7,"main_state_dm_color":"","objective_state_dm_color":"","direction":0,"pk_direction":0,"quartet_direction":0,"anniversary_crowd":0,"yeah_space_type":"","yeah_space_url":"","jump_to_url":"","space_type":"","space_url":""}'}}, 'message': '主播对UL 1以下开启了禁言,等待主播解除~', 'msg': '主播对UL 1以下开启了禁言,等待主播解除~'}

可能真实的id的确会在一些情况下变成唯一的发送方式,且可以获得更多的报错信息。

Nemo2011 avatar Oct 18 '22 12:10 Nemo2011

这里确实需要做出一些更正。

Nemo2011 avatar Oct 18 '22 12:10 Nemo2011

其他应该没有很大的问题,发现了再改吧。

Nemo2011 avatar Oct 19 '22 11:10 Nemo2011

应该都是可以用url中的房号或真实房号的

Nemo2011 avatar Oct 19 '22 11:10 Nemo2011