| .github | ||
| .vscode | ||
| doc | ||
| lib | ||
| script | ||
| test | ||
| .dockerignore | ||
| .eslintrc.json | ||
| .gitignore | ||
| Dockerfile | ||
| env.example.js | ||
| LICENSE | ||
| main.js | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
AutoScript
已实现功能:
点赞 评论 转发 @好友 带话题 随机动态 检测开奖 清理
声明: 此脚本仅用于学习和测试,作者本人并不对其负责,请于运行测试完成后自行删除,请勿滥用!
操作步骤
右上角★ Star
↓↓
获取COOKIE
进入B站主页获取Cookie用于登录
Chrome浏览器:
-
F12打开控制台 -
进入Application找到Cookies栏中的SESSDATA将HttpOnly选项取消勾选
(此步骤是为了方便后续采用JS获取Cookies)
-
在Console中复制以下代码回车
/** 自动复制到粘贴板 */ document .cookie .split(/\s*;\s*/) .map(it => it.split('=')) .filter(it => ['DedeUserID','bili_jct', 'SESSDATA'].indexOf(it[0]) > -1) .map(it => it.join('=')) .join('; ') .split() .forEach(it => copy(it) || console.log(it))
也可以采用其他方式获取所需的Cookie
只需含有 DedeUserID=...;SESSDATA=...;bili_jct=... 三项即可
(分号分割, 不要换行, 顺序随意)
↓↓
本地运行
具体操作详见env.example.js文件内注释
Windows
step1: 下载代码到本地
点此下载或如图示下载↓
下载的压缩包解压后修改env.example.js文件,详见step3
step2: 下载并安装Node.js
step3:修改env.example.js文件及创建运行文件(打开扩展名显示)
1.step1下载的压缩包解压后将其中的env.example.js文件重命名为env.js
2.右键env.js文件选择编辑或用记事本打开
3.填入相关参数
4.运行
注: npm i意味安装依赖, 只需运行一次, 为防止依赖有变化遂每次都执行
命令一: 启动抽奖
npm i && npm run start
命令二: 检查中奖
npm i && npm run check
命令三: 清理动态
npm i && npm run clear
script目录下有启动脚本, 点击即可运行
注: 本地运行时可在设置中增大扫描页数
Linux
Docker
初始化
curl -fsSL https://cdn.jsdelivr.net/gh/shanmite/LotteryAutoScript@main/script/docker/init.sh | sh
进入lottery文件夹
编辑env.js与my_config.json文件
- env.js 设置必要环境变量
- my_config.json 写入你要覆盖的默认设置
执行相应的脚本
防重复转发
脚本将所转发过的动态都写入lib/dyid*.txt文件中
完整转发一轮后才会进行写入操作, 勿过早关闭运行
检测中奖
检测未读信息, 已读未读信息
判断依据
-
通过
@信息判断 -
通过私信判断
关键词有限 可能会有漏掉的或误报
中奖推送(可选)
填写在env.js内
以下是支持的推送方式
| Name | 归属 | 属性 | 说明 |
|---|---|---|---|
SCKEY |
微信server酱推送(于2021/4月下线) | 非必须 | server酱的微信通知官方文档 |
SENDKEY |
微信server酱(Turbo版)推送 | 非必须 | 获取SENDKEY 选择消息通道 |
BARK_PUSH |
BARK推送 | 非必须 | IOS用户下载BARK这个APP,填写内容是app提供的设备码,例如:https://api.day.app/123 ,那么此处的设备码就是123,再不懂看 这个图(注:支持自建填完整链接即可) |
BARK_SOUND |
BARK推送 | 非必须 | bark推送声音设置,例如choo,具体值请在bark-推送铃声-查看所有铃声 |
TG_BOT_TOKEN |
telegram推送 | 非必须 | tg推送(需设备可连接外网),TG_BOT_TOKEN和TG_USER_ID两者必需,填写自己申请@BotFather的Token,如10xxx4:AAFcqxxxxgER5uw , 具体教程 |
TG_USER_ID |
telegram推送 | 非必须 | tg推送(需设备可连接外网),TG_BOT_TOKEN和TG_USER_ID两者必需,填写@getuseridbot中获取到的纯数字ID, 具体教程 |
TG_PROXY_HOST |
Telegram 代理的 IP | 非必须 | 代理类型为 http。例子:http代理 http://127.0.0.1:1080 则填写 127.0.0.1 |
TG_PROXY_PORT |
Telegram 代理的端口 | 非必须 | 例子:http代理 http://127.0.0.1:1080 则填写 1080 |
DD_BOT_TOKEN |
钉钉推送 | 非必须 | 钉钉推送(DD_BOT_TOKEN和DD_BOT_SECRET两者必需)官方文档 ,只需https://oapi.dingtalk.com/robot/send?access_token=XXX 等于=符号后面的XXX即可 |
DD_BOT_SECRET |
钉钉推送 | 非必须 | (DD_BOT_TOKEN和DD_BOT_SECRET两者必需) ,密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的SECXXXXXXXXXX等字符 , 注:钉钉机器人安全设置只需勾选加签即可,其他选项不要勾选,再不懂看 这个图 |
IGOT_PUSH_KEY |
iGot推送 | 非必须 | iGot聚合推送,支持多方式推送,确保消息可达。 参考文档 |
QQ_SKEY |
酷推(Cool Push)推送 | 非必须 | 推送所需的Skey,登录后获取Skey 参考文档 |
QQ_MODE |
酷推(Cool Push)推送 | 非必须 | 推送方式(send或group或者wx,默认send) 参考文档 |
QYWX_KEY |
企业微信推送 | 非必须 | 密钥,企业微信推送 webhook 后面的 key 详见官方说明文档 |
PUSH_PLUS_TOKEN |
pushplus推送 | 非必须 | 微信扫码登录后一对一推送或一对多推送下面的token(您的Token) 官方网站 |
PUSH_PLUS_USER |
pushplus推送 | 非必须 | 一对多推送的“群组编码”(一对多推送下面->您的群组(如无则新建)->群组编码)注:(1、需订阅者扫描二维码 2、如果您是创建群组所属人,也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送),只填PUSH_PLUS_TOKEN默认为一对一推送 |
SMTP_HOST |
电子邮件 | 非必须 | smtp服务器的主机名 如: smtp.qq.com |
SMTP_PORT |
电子邮件 | 非必须 | smtp服务器的端口 如: 465 |
SMTP_USER |
电子邮件 | 非必须 | 发送方的电子邮件 如: xxxxxxxxx@qq.com |
SMTP_PASS |
电子邮件 | 非必须 | smtp服务对应的授权码 |
SMTP_TO_USER |
电子邮件 | 非必须 | 接收方电子邮件 |
设置说明
模式选择
lib/config.js
点击显示所有设置的详细说明
model'00'关闭自动抽奖'10'只转发官方抽奖'01'只转发非官方抽奖'11'都转
chatmodel'00'关闭自动评论'10'只评论官抽'01'只评论非官抽'11'都评论
scan_page_num- 在uid或tag里检索的页数
number
maxday- 开奖时间距离现在的最大天数
- 默认为
-1表示不限制 string
wait- 转发间隔时间
- 单位毫秒
- 上下浮动50%
string
minfollower- up主粉丝数限制
- 仅限制没有官方认证的up
string
only_followed- 只转发已关注的
'1'开启'0'关闭
create_dy- 是否发送随机动态(防止被开奖机过滤)
'1'开启'0'关闭
create_dy_num- 发送随机动态的数量
number
dy_contents- 随机动态内容
- 类型
content[]/** * @typedef Picture * @property {string} img_src * @property {number} img_width * @property {number} img_height * @param { string | Picture[] } content */
at_users- 转发时[at]的用户
AtInfo[]/** * @typedef {string} NickName * @typedef {number} UID * @typedef {(NickName | UID)[]} AtInfo */
blacklist- 防钓鱼uid黑名单
- 逗号分割字符串
blockword- 屏蔽词
string[]
followWhiteList- 取关白名单
- 逗号分割字符串
relay- 转发评语
string[]
chat- 评论内容
string[]- 若此项不为长度大于0的数组, 则使用转发评语
UIDs- 监听的UID列表
number[]
TAGs- 监听的抽奖话题
string[]
partition_id- 抽奖UP用户分组id
number
is_exception- 是否关注异常
boolean
clear_partition- 取关分区
string
clear_max_day- 清理多少天内的动态或关注
number
clear_remove_dynamic- 是否移除动态
boolean
clear_remove_attention- 是否移除关注
boolean
clear_remove_delay- 清除动态延时(毫秒)
number
clear_dynamic_type- 清除动态类型
动态类型 type值 无 0转发 1含图片 2无图纯文字 4视频 8专栏 64活动 2048 number
- 清除动态类型


