- 此程序不收集任何用户信息/数据
- 可自建服务器bilibili-live-monitor-ts, 也可以用默认的设定
- 包括bilibili-live-monitor-ts在内的所有项目永久开源 没有闭源的打算 亦不接受打赏
- 实力不济没能写出更多功能 代码也非常难看23333
- 有bug请务必反馈 Issues就是用来讨论的
- 祝各位白嫖愉快~
- 主站观看视频 (mainwatchvideo)
- 主站分享视频 (mainsharevideo) 仅模拟 不会真实分享
- 直播签到 (livesign)
- 直播心跳 (liveheart)
- 直播抽奖 (guard, gift, pk)
- 双端观看 (doublewatch)
- 银瓜子领取 (silverbox)
- 友爱社签到 (idolclubsign)
- src/client/default-user-info.json 填写用户名/密码 (这个版本用到了app端的access_tokens,所以不能只提供cookies)
npm install
安装依赖库node src/main.js
运行- 程序自带抽奖休眠(见任务设置) 可以用pm2永久运行程序
npm install
安装依赖库npm install -g pm2
全局安装PM2pm2 start src/main.js
运行程序pm2 ls
查看运行状态 名为main那个就是了 (如果状态是errored 用下一步看下日志 反馈issues)pm2 logs main --lines 100
查看100行日志 (CTRL-C 退出日志状态)pm2 stop main; pm2 delete main
停止+删除程序进程
- Config file
/src/settings.json
- httpServer为账号/任务管理界面设定 (未实现 我太菜了)
- wsServer为舰长+抽奖服务器设定,支持多服务器,每个服务器可单独设置可选参数,例如下示的备用服务器设置可以用不同颜色显示,并且只显示连接和断线信息
- receiver为抽奖监听设定
- notifier为定时任务通知设定
- account为一些账号任务运行杂项设置,包括每秒最大请求数,已进入房间追踪数组最大长度,在访问被拒绝的情况下小黑屋检查间隔时间(单位为小时)
{
"httpServer": {
"host": "127.0.0.1",
"port": 8899
},
"wsServer": [
{
"host": "warpgate.cat.pdx.edu", // 如果自建服务器的话请务必换成自己的ip 本机的话是127.0.0.1
"port": 8999
},
{
"host": "127.0.0.1",
"port": 8999,
"retries": 1, // 【可选设置】断线后短时间内重试次数。如果短时间内重试失败会等待一段时间后尝试重新连接。默认值为3
"reconnectWaitTime": 60, // 【可选设置】断线后重新连接等待时长(单位为秒)。默认值为10秒
"healthCheckInterval": 10, // 【可选设置】断线检测间隔(单位为秒)。默认值为5秒
"healthCheckThreshold": 30, // 【可选设置】断线检测阈值,从最后一次接收到ping请求算起(单位为秒)。默认值为25秒
"enableConnectionErrorLogging": false, // 【可选设置】是否显示连接错误信息(如果备用服务器不是一直在线的话建议关闭)。默认值为true
"enableConnectionRetryLogging": false, // 【可选设置】是否显示连接重试信息(如果备用服务器不是一直在线的话建议关闭)。默认值为true
"infoColor": "white", // 【可选设置】普通连接信息显示颜色。默认值为green(绿色)
"errorColor": "yellow" // 【可选设置】连接错误信息显示颜色。默认值为red(红色)
}
],
"storm": {
"rate": 0.6 // 风暴参与几率 (0.6 == 60%)
},
"receiver": {
"janitorInterval": 1, // 【可选设置】已参与抽奖的礼物ID缓存清理间隔(单位为分)。默认值为1分钟
"expiryThreshold": 5 // 【可选设置】已参与抽奖的礼物ID在缓存内过期后的存留时长(单位为分)。默认值为5分钟
},
"notifier": {
"heartbeatInterval": 5, // 【可选设置】双端直播心跳发送间隔(单位为分)。默认值为5分钟
"midnightCheckInterval": 60 // 【可选设置】午夜判定检测间隔(单位为分)。默认值为60分钟。如果担心银瓜子最后领取时间(正常3轮54分钟,老爷5轮90分钟)超过心跳任务设置的时间太多(默认工作日0:45,周末2:00),可将本设置缩短,例如设为5分钟
},
"account": {
"maxRequestsPerSecond": 50, // 【可选设置】每秒最大请求数。默认值为50。设置过大容易造成412风控IP
"maxNumRoomEntered": 30, // 【可选设置】已进入房间追踪数组最大长度。默认值为30。已在数组内的房间再次抽奖时不再发送进入信息。可以简单理解为同时打开n个房间的直播页面
"blacklistCheckInterval": 24, // 【可选设置】在访问被拒绝的情况下小黑屋检查间隔时间(单位为小时)。默认值为24小时。在检测到拒绝访问后不再参与抽奖和领取银瓜子,并且会依此设置等待一段时间后再次检测
"stormJoinMaxInterval": 60, // 【可选设置】节奏风暴领取请求最大间隔(单位为毫秒)。节奏风暴领取时会以快速多重请求方式发送,一般情况下在前一个请求执行完毕后才会发送下一个请求,但在网络延迟大的情况下会以不超过此设置的间隔发送。默认值为60毫秒
"abandonStormAfter": 25 // 【可选设置】如果节奏风暴在设定的时间段内未能成功领取,则放弃重试(单位为秒)。默认值为25秒
}
}
- Config file
/src/client/default-user-info.json
- 填入账号信息并成功登录后,程序自动以相同的格式写入
src/client/user.json
,此后都从src/client/user.json
读取账号和登录信息 - 与Python版的区别:JS实现包括但不限于主站任务、双端观看功能,因此app的两项也必须填上 (仅填cookies不执行任何任务)
{
"user": {
"username": "",
"password": ""
},
"app": {
"access_token": "",
"refresh_token": ""
},
"web": {
"bili_jct": "",
"DedeUserID": "",
"DedeUserID__ckMd5": "",
"sid": "",
"SESSDATA": ""
}
}
- Config file
/src/client/default-task-settings.json
- "taskschedules" 定义任务执行时间段,可以定义多个不同的时间段并给予不同的名字
- "tasks" 定义任务。每个任务 "enabled": true 为开启, false 为关闭。
- 任务的 "schedule" 可以引用一个在 "taskschedules" 里定义的时间段(必须存在)
- 默认所有任务开启,所有抽奖、心跳任务于北京时间工作日 08:00 - 0:45 ,周末 09:00 - 02:00 时间段执行
- 修改from、to的hours、minutes数值可以自定义抽奖时间段
- weekdays允许值为0-6,对应星期日,一到六。可用逗号分隔,且可以用连接号定义区间,比如0-2,4,6代表周日到周二,加周四和周六
- 还请不要修改type ~
{
"taskschedules": {
"normal": [
{
"from": {
"hours": 8,
"minutes": 0
},
"to": {
"hours": 0,
"minutes": 45
},
"weekdays": "1-4"
},
{
"from": {
"hours": 8,
"minutes": 0
},
"to": {
"hours": 2,
"minutes": 0
},
"weekdays": "5"
},
{
"from": {
"hours": 9,
"minutes": 0
},
"to": {
"hours": 2,
"minutes": 0
},
"weekdays": "6"
},
{
"from": {
"hours": 9,
"minutes": 0
},
"to": {
"hours": 0,
"minutes": 45
},
"weekdays": "0"
}
],
"always": [
{
"from": {
"hours": 0,
"minutes": 0
},
"to": {
"hours": 0,
"minutes": 0
},
"weekdays": "0-6"
}
]
},
"tasks": {
"pk": {
"type": "scheduled",
"enabled": true,
"schedule": "normal"
},
"gift": {
"type": "scheduled",
"enabled": true,
"schedule": "normal"
},
"guard": {
"type": "scheduled",
"enabled": true,
"schedule": "normal"
},
"storm": {
"type": "scheduled",
"enabled": true,
"schedule": "normal"
},
"liveheart": {
"type": "scheduled",
"enabled": true,
"schedule": "normal"
},
"livesign": {
"type": "daily",
"enabled": true
},
"idolclubsign": {
"type": "daily",
"enabled": true
},
"mainsharevideo": {
"type": "daily",
"enabled": true
},
"mainwatchvideo": {
"type": "daily",
"enabled": true
},
"silverbox": {
"type": "daily",
"enabled": true
},
"doublewatch": {
"type": "daily",
"enabled": true
}
}
}
有Bug请务必立刻反馈 (有使用方式的疑问或者任何功能方面的建议 也欢迎讨论)
炸我邮箱[email protected]