B站刷弹幕

耍耍b站弹幕

先说说b站弹幕原理:
即post请求
你发一个弹幕,根据你当前的cookies和headers,加上data内容,对b站的接口 ‘https://api.bilibili.com/x/v2/dm/post’ 发送一个post请求。
会不会封号?理论上不会,就是用py代替你发几个post请求。只要注意加上随机等待时间、随机发送时间,假装自己是“人”,一般没事,但不保证。
前提条件:
requests

pip install requests

推荐Anaconda,如果没有,则看看
不安装Anaconda下载python库

1、打开一个视频,摁下F12(或者右键,检测),选中网络/Network
此时记得先暂停视频播放,要不跳得飞快
在这里插入图片描述
2、随便发一个弹幕,然后看到一个post请求
在这里插入图片描述
3、右键-复制-复制为cURL(bash)
不同浏览器可能显示不一样,有些只有copy as curl,不懂的话根据4、自己测试就行
在这里插入图片描述
4、打开网址https://curlconverter.com/去转换成python需要的格式
在这里插入图片描述
5、将上述复制在python文件中,然后自行更改data里面的数据就可以了,然后执行文件,如果要一直刷屏,那么可以加个循环
6、步骤5中有一个data(在post中也能看到),其中 oid、bvid 这两个每换一次视频就要重新改一下,msg是你发送的消息,progress是你发送的时间(毫秒制),fontsize是字体大小,color是字体颜色(其他颜色可以更改弹幕类型,然后重新查看post)、mode是弹幕类型(正常、顶部、底部),所以,针对这一部分可以进一步更改
在这里插入图片描述

在这里插入图片描述

最终代码:

import requests, time, random
import configparser  # 配置文件信息

target = configparser.ConfigParser()  # 文件对象
# 保存一个txt.ini文件,内容格式为:
# [弹幕]
# 1=我是弹幕1
# 2=我是弹幕2
# 3=记得没有引号,就是这样
target.read(r'G:\Unity\code_project\other_project\text.ini', encoding='utf-8')  # 读取文件<br>
i = 0
# 自行填写cookies和headers
cookies = {
    
    }
headers = {
    
    }

while True:
    # 其中oid、bvid、rnd、max_time每换一个视频就要重新设置一次
    oid = '555858040'
    bvid = 'BV1wT4y1S751'
    rnd = '1649727277711366'
    # 视频总时间, 格式 : xx分xx秒   如: 1.30, 1.02    2.10
    max_time = 4.53
    pool = '0'
    plat = '1'
    checkbox_type = '0'
    csrf = 'aa1c8518f4c446794038ab9e1e73c9b4'

    # 最大时间, 等于max_time转换成毫秒,防止process超出最大时间
    sec_1 = int(max_time) * 60
    sec_2 = int((max_time - int(max_time)) * 100)
    max_time_ms = (sec_1 + sec_2 - 3) * 1000    # 减去3秒,为什么?防止到最大时间
    # 选取随机弹幕,text.ini里面有多少条,就 randint(1, 多少)
    message = target.get('弹幕', str(random.randint(1, 12)))
    # mode:1正常弹幕    4底部弹幕    5:顶部弹幕, 随机设定1,4或者5
    # color:16777215-白色 16740868-橙色 16776960-黄色 16646914-红色
    process = random.randint(500, max_time_ms)   # 随机弹幕时间
    colors = [16777215, 16777215, 16740868, 16776960]
    color = colors[random.randint(0, 3)]    # 随机颜色 白色(16777215)概率高一些
    modes = [1, 4, 5, 1]    # 正常类型的弹幕
    mode = modes[random.randint(0, 3)]  # 随机弹幕类型 (1)的概率高一些
    # 随机弹幕间隔,一直发送会歇火,设置随机休息15到30秒
    sleep_time = random.randint(15, 30)  
    # print(f'time:{process}ms')
    data = {
    
    
        'type': '1',
        'oid': oid,
        'msg': message,
        'bvid': bvid,
        'progress': process,
        'color': color,
        'fontsize': '25',
        'pool': pool,
        'mode': mode,
        'rnd': rnd,
        'plat': plat,
        'checkbox_type': checkbox_type,
        'csrf': csrf
    }
# 最后这个链接来源看下图
    response = requests.post('https://api.bilibili.com/x/v2/dm/post', cookies=cookies, headers=headers, data=data)
    i = i + 1
    print(f"第{
      
      i}次, 第{
      
      process}ms, 颜色:{
      
      color}, 类型:{
      
      mode}, 下次间隔:{
      
      sleep_time}s")
    time.sleep(sleep_time)

在这里插入图片描述
效果成不成?自个发个视频测试一下
(那肯定是正常的啦)
而且如果你没用Anaconda的话,刷弹幕的时候只用双击一下py文件就能运行
在这里插入图片描述
内存占用还低
在这里插入图片描述

参考:
python实现B站自动刷弹幕[EB/OL]//知乎专栏. [2022-05-01]. https://zhuanlan.zhihu.com/p/133809380.

流量的世界。。

猜你喜欢

转载自blog.csdn.net/qq_43622870/article/details/124531415