bilibili-api
bilibili-api copied to clipboard
【漏洞】一些直播间方法中仍使用room_display_id作为参数而非真实room_id
模块路径: bilibili_api.live
如 https://live.bilibili.com/3010,id实际上为8633637。
建议解决方法:
直接向https://live.bilibili.com/{room_display_id}发送Get请求,在resp中存在真实room_id。
尤其对于数字比较小的room_id,好像是靓号什么的😕
问题更正:
我看到live.py中通过更好的方法实现了获取真实id,但是在一些方法中仍使用room_display_id作为参数,比如send_danmaku等。
没有问题啊!
在一些方法发送的参数中,roomid仍然使用的url中表观id,并未采用真实id,如live.py中第416行
这并不会导致报错,但使用时实际上弹幕并未发送到指定直播间。
from bilibili_api import live, sync, Danmaku, Credential
room = live.LiveRoom(url 上的房号, credential = Credential())
sync(room.send_danmaku(Danmaku("")))
可以正常发弹幕的啊,如果没有发出来的话,我试一下那个房号。
比如最上面写的3010直播间。
问题在于,发送弹幕的请求参数中,roomid需要是真实id,而不是表观id。
[系统]:主播对用户等级 UL.1 以下的用户开启了禁言
这应该就是发了弹幕也看不见的原因
其他直播间我试过,如果一切正常,可以发出弹幕,我也都能看到。
并不是,将roomid换成真实id后可以正常发送
简单地说就是
room = live.LiveRoom(8633637, credential)
中,第一个参数必须填真实房间id,也就是8633637才能发送,填写表观id3010则无法发送
好像确实啊,谢谢提醒。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的确会在一些情况下变成唯一的发送方式,且可以获得更多的报错信息。
这里确实需要做出一些更正。
其他应该没有很大的问题,发现了再改吧。
应该都是可以用url中的房号或真实房号的