b站直播刷弹幕脚本(php)

发布于 / PHP / 0 条评论

原创。转载请保留本文链接与作者。

注意,本文需要会安装php并打开curl拓展。不会安装php的请百度安装php。

最近,一直和b站有着P♂Y交易的小米发布了小米Max 2。为了展现小米max2的大电量,小米在b站进行了超耐久直播活动。作为穷米粉,当然希望获得小米max 2,于是写了这个脚本。



乍一看弹幕很多,仔细一看,全是机器刷出来的。md。。于是写了这个刷弹幕的脚本,使用语言为php。

当然这个脚本不仅适用于这个活动,反正功能是发弹幕,具体用来做什么,看你自己的了。

首先说下自己写这个脚本的思路。首先打开直播间,F12调出控制台,点击network进行抓包。我们发送一条弹幕,控制台显示如下




这就很清晰明了了。直播发送弹幕的接口为http://live.bilibili.com/msg/send,请求方式为POST,内容中color和fontsize分别是颜色和字体大小,msg为弹幕内容,rnd为进入直播间的时间(事实证明瞎填一个时间也是可以的)。roomid为直播间的房间号。我们完全可以用php的curl函数进行伪造发送弹幕。

下面是代码,请根据需要自行修改。

<?php
$sendmsg=mt_rand(0,99)."求中奖-(゜-゜)つロ小米max2";  //这里mt_rand是随机数,防止发送过多相同的内容造成封号
$url="http://live.bilibili.com/msg/send";
$ck="xxxx";  //这个是cookies,请根据自己的cookies进行修改。修改方法为在F12控制台console选项卡输入document.cookie,然后把显示出的一堆复制进来就行
$rnd=time()-100;
$post="color=16777215&fontsize=25&mode=1&msg=".$sendmsg."&rnd=".$rnd."&roomid=545342";  //roomid根据房间号进行修改
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIE, $ck); 
curl_setopt ($ch, CURLOPT_HTTPHEADER, array (
    'Referer:http://static.hdslb.com/live-static/swf/LivePlayerEx_1.swf?_=1-1-c5a315d',
    'Origin:http://static.hdslb.com',
    'User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
    'X-Requested-With:ShockwaveFlash/23.0.0.162',
    'Host:live.bilibili.com',
                      ));
//这里伪造请求头,防止b站检测出我们是机器人
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$response = curl_exec($ch);
curl_close($ch);
if($response=='{"code":0,"msg":"max limit","data":[]}');//echo "limit!\n";  //这个max limit是小米直播b站防止过多弹幕刷屏的一个策略,在别的房间没有这个策略
else if($response=='{"code":0,"msg":"msg in 1s","data":[]}');//echo "frq!\n";  //出现frq代表频繁了
else if($response=='{"code":0,"msg":"","data":[]}')echo date("H:i:s").":success!\n";  //如果发送成功输出的json数据是这样的。我们让脚本输出时间,作为我们日志记录
else if($response=='{"code":0,"msg":"k","data":[]}')echo date("H:i:s").":success!\n";  //这个json也代表成功
else if($response=='{"code":0,"msg":"msg repeat","data":[]}');//echo "repeat!\n";  //这个代表发送内容重复了
else echo $response.'\n';  //有其他输出,脚本会原封不动的输出,请根据情况自行判断。

保存脚本,命名为send.php。linux在命令行输入php send.php,windows在cmd输入php的路径后面加send.php。看看是不是成功发送了一条弹幕呢

你可能会问,这只是发送了一条弹幕啊,如何连续不断的发送呢?当然使用while(1)循环的话就等着被b站封号吧。我这里提供一个windows下使用cmd,固定间隔时间进行发送弹幕。

新建一个bat文件,内容如下

@echo off
title bilibili sender
:main
C:/php/php.exe send.php >>sender.log
ping 127.0.0.1 -n 2 >nul
goto main

这里请自行修改php.exe的路径。倒数第二行-n 2 >nul中的2表示每2秒发送一次。不想被b站封号请不要把这个数字改太小。sender.log为发送日志。

运行这个脚本,打开sender.log,就可以看到发送成功的日志了。如果sender.log中内容一直为空,请检查脚本写的是否出现问题。

附一张成功的截图

转载原创文章请注明,转载自: 斐斐のBlog » b站直播刷弹幕脚本(php)
目前还没有评论,快来抢沙发吧~