Bili动态抽奖助手
Go to file
2021-06-05 18:03:46 +08:00
.github pref: 更改env.js设置方法 2021-06-02 21:21:44 +08:00
.vscode feat: 提供8种推送方式 2021-03-13 20:02:01 +08:00
doc docs: 新增linux系统配置运行说明 2021-05-11 13:06:43 +08:00
lib feat: 可单独清理关注 2021-05-24 21:50:37 +08:00
script pref: cdn改为cdn.staticaly.com 2021-06-05 18:03:46 +08:00
test feat: 动态去重 2021-04-16 11:26:01 +08:00
.dockerignore test: 增加docker运行方式 2021-06-04 14:06:15 +08:00
.eslintrc.json fix: dyid重复拼接 2021-01-14 18:47:07 +08:00
.gitignore test: 增加docker运行方式 2021-06-04 14:06:15 +08:00
Dockerfile test: 增加docker运行方式 2021-06-04 14:06:15 +08:00
env.example.js pref: 多账号信息不直接写入环境变量 2021-06-03 19:16:43 +08:00
LICENSE Create LICENSE 2020-12-27 13:52:04 +08:00
main.js fix: multiple_account被覆盖为未定义 2021-06-04 22:20:42 +08:00
package-lock.json test: 增加docker运行方式 2021-06-04 14:06:15 +08:00
package.json fix: 3 non-fatal bugs 2021-05-15 15:36:32 +08:00
README.md pref: cdn改为cdn.staticaly.com 2021-06-05 18:03:46 +08:00

AutoScript

Automatic sweepstakes

Automatic check

Automatic clear dynamic&follow

Automatic sync

已实现功能:

点赞 评论 转发 @好友 带话题 随机动态 检测开奖 清理

声明: 此脚本仅用于学习和测试,作者本人并不对其负责,请于运行测试完成后自行删除,请勿滥用!


操作步骤

右上角★ Star

↓↓

获取COOKIE

进入B站主页获取Cookie用于登录

Chrome浏览器:

  1. F12打开控制台

  2. 进入Application找到Cookies栏中的SESSDATA将HttpOnly选项取消勾选

    (此步骤是为了方便后续采用JS获取Cookies)

取消httponly

  1. 在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

点此进入nodejs下载页面

点我加载下载nodejs操作图示

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目录下有启动脚本, 点击即可运行

注: 本地运行时可在设置中增大扫描页数

windows系统定时运行

Linux

linux系统配置与定时运行

Docker

1.初始化

curl -fsSL https://cdn.staticaly.com/gh/shanmite/LotteryAutoScript/main/script/docker/init.sh | sh

进入lottery文件夹

cd lottery

编辑env.jsmy_config.json文件

  • env.js 设置必要环境变量
  • my_config.json 写入你要覆盖的默认设置

执行相应的脚本

start,check,clear

2.更新

进入lottery上一级目录

使用与初始化相同的命令

3.卸载

进入lottery上一级目录

docker image rm shanmite/lottery_auto_docker
rm -rf lottery/

防重复转发

脚本将所转发过的动态都写入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_TOKENTG_USER_ID两者必需,填写自己申请@BotFather的Token,如10xxx4:AAFcqxxxxgER5uw , 具体教程
TG_USER_ID telegram推送 非必须 tg推送(需设备可连接外网),TG_BOT_TOKENTG_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_TOKENDD_BOT_SECRET两者必需)官方文档 ,只需https://oapi.dingtalk.com/robot/send?access_token=XXX 等于=符号后面的XXX即可
DD_BOT_SECRET 钉钉推送 非必须 (DD_BOT_TOKENDD_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

自定义设置

  • 默认设置存放于config.jsscript.js
  • 修改默认设置(非必要)
    • 本地运行 => 在项目根目录下新建my_config.json文件将设置填在其中
  • 填入符合JSON语法的内容
  • 字段的名称和对应的值按照字段解释要求填写
  • 多账号的设置
    分别存储于键"config_1"``"config_2"..."config_n"中, 例如
    {
      "config_1": {
          "model": "00"
      },
      "config_2": {
          "model": "11"
      }
    }
    
  • 自定义设置模板