2023.10.1 更新

本文内容可能不再适用,请酌情对照参考 官方仓库 安装教程。

温馨提示:

截止目前(2023.10.1),新用户可以选择安装Debian版本docker pull whyour/qinglong:debian

优点是兼容更多的python依赖:例如 ddddocr 只能在Debian版本安装,而不能在默认版本中安装。

前言

继上一篇分享了基础的青龙面板搭建以及京东京豆挂机 后,今日我又看到一个有趣的挂机项目BiliTools。

在对项目的原文档 进行一定研究后,我又准备水一篇相应的配置教程。

结合我自己的理解,仅供参考!!!

小提示:

由于vercel服务的主域名vercel.app近日被墙,查阅原文档需自备科学上网条件。

准备

一台运行的青龙服务器(本地或者云服务器都可)。

搭建教程:点击查看

该项目可以运行在多种环境下,包括但不限于本地运行、青龙面板、Docker、云函数等等。

本篇只针对青龙面板进行部署。

教程

安装依赖

青龙面板->依赖管理->NodeJs->新建依赖 ,输入名称 @catlair/bilitools ,点击确定安装即可。

安装依赖

拉取脚本

青龙面板->定时任务->新建任务 ,输入名称(随意)、命令(ql raw https://gitee.com/Kudouran/BiliTools/raw/main/tools/bilitools_npm.js)、定时规则(0 0 0 * * *),点击确定后手动运行一次即可。

关于定时规则:

这里使用的是Java类型的cron表达式,**0 0 0 * * *** 表示每日的凌晨定时运行一次。

如果想要自行修改,可以使用在线工具

cron表达式

拉取脚本

更新npm包

自动更新如下所示:

更新npm包

pnpm remove -g @catlair/bilitools && pnpm add -g @catlair/bilitools

不输入 pnpm remove -g @catlair/bilitools 的话前一个版本的依赖包就会一直保留在磁盘中。

获取cookie

PC端浏览器隐私模式(推荐)

以 PC 端浏览器举例(推荐使用 Firefox/Chrome/Chromium Edge)

最终 Cookie 是这样的(为了演示方便换了行,实际只有一行):

_uuid=D2282D0F-257B-845A-BDF5-C770ED288F4001440infoc; buvid3=BF17608E-FB87-4F49-A922-56FD2E284D6F18534infoc;
fingerprint=5502cd4fe9637738de04bd9c3d1bdbc5;
buvid_fp=BF17608E-FB87-4F49-A922-56FD2E284D6F18534infoc;
SESSDATA=21607773%2C1631089673%2C71a42%2A31; bili_jct=dd92c55a6d67041ce2f3fb1650889ea8;
DedeUserID=521268093; DedeUserID__ckMd5=47d541f04b605da9;
sid=ivie73r8; fingerprint3=792b32adfecbe31a4aca53ab7be1ad76;
fingerprint_s=bb6736758e7344a295c2ed6070cc642e;
buvid_fp_plain=BF17608E-FB87-4F49-A922-56FD2E284D6F18534infoc;
CURRENT_FNVAL=80; blackside_state=1; rpdid=|(kmJYYJ)lkR0J'uYu)llkJYJ; _dfcaptcha=a46d7562a42065d43a88c053e283e876;
LIVE_BUVID=AUTO8016188357987702; bsource=search_baidu; PVID=2

为了避免 cookie 被刷新失效(例如你时常使用浏览器访问 b 站,那就不要直接复制它的 cookie,因为目前存在 cookie 自动刷新的情况,你保留的就会失效了)。

你应该使用隐私窗口重新登录b站,并获取新的 cookie。

隐私窗口打开方式(举例):

隐私窗口

获取成功后应该直接关闭隐私窗口,切记不要退出你的b站账号,那样 cookie 会立马失效。

Chrome

打开浏览器隐私窗口,任意方式进入 b 站(搜索,收藏夹,地址访问等),登录账号。 按 F12 (或者右键 –> 检查)打开开发者工具,切换到 网络 ( network ) 点击重新载入(或者按 F5,Ctrl + R 等)刷新页面,点击某一个请求(通常是第一个为 nav )。

chrome获取cookie

注意:

在使用 Chromium 类的浏览器时复制时一定要选中复制,而不是使用自带的复制值功能。

Firefox

打开浏览器隐私窗口,任意方式进入 b 站(搜索,收藏夹,地址访问等),登录账号。 按 F12 (或者右键 –> 检查)打开开发者工具,切换到网络 ( network ) 点击重新载入(或者按 F5,Ctrl + R 等)刷新页面。

firefox获取cookie

firefox获取cookie

手机端

不推荐,有缺陷,暂时不提。

配置文件(重点)

配置文件的编写是本文的重点,也是项目的重点。

正确配置该文件才能正常使用,需要各位多花时间认真阅读。

懒人版单人自用(请按需修改)

[
  // 注意 // 开头的是注释,没有实际意义
  {
    // 浏览器用户代理 打开下面网址在线获取:
    // http://service.spiritsoft.cn/ua.html
    userAgent: '',
    // 通用 api 延迟时间(s)
    apiDelay: [2, 6],
    // b 站 cookie
    // 获取教程在上面
    cookie: "",
    // 配置运行的功能
    function: {
      // 瓜子兑换硬币
      silver2Coin: true,
      // 投币
      addCoins: true,
      // 直播签到
      liveSignTask: true,
      // 分享和观看
      shareAndWatch: true,
      // 漫画任务
      mangaTask: true,
      // 应援团签到
      supGroupSign: false,
      // 使用 b 币券
      useCouponBp: true,
      // 获取 vip 权益
      getVipPrivilege: true,
      // 直播赠送礼物
      giveGift: false,
      // 赛事竞猜
      matchGame: false,
      // 取消关注
      batchUnfollow: true,
      // 直播天选时刻
      liveLottery: false,
      // 直播天选红包
      liveRedPack: true,
      // 粉丝牌等级
      liveIntimacy: false,
      // 大会员大积分
      bigPoint: false,
      // 风纪委员
      judgement: false,
      // 转盘抽奖
      activityLottery: false,
    },
    // 直播天选时刻
    redPack: {
      // 直播间来源方式 1 活动(活动链接可能更新不及时),2 扫描。其它值 所有方式依次尝试。
      source: 0,
      // 活动链接
      uri: 'https://api.live.bilibili.com/xlive/fuxi-interface/AugRedPacket2022Controller/redPocketPlaying',
      // 【仅使用活动时有效】 每轮抢红包的间隔时间(秒)
      intervalActive: 60,
      // 中场休息时间,当每参加了几个直播间的时候,休息一下 [参加个数,休息时间(分,小于1为直接结束)]
      restTime: [-1, -1],
      // 疑似触发风控时休眠时间,[连续出现次数,休眠时间(分,小于1为直接结束)]
      riskTime: [-1, -1], // 与 riskNum 不同,该参数会与 restTime 互相影响重置次数
      // 同时参与的直播间数量
      linkRoomNum: 1,
      // 参与直播时发送的弹幕数量(与内置数量比,min(10,剩余时间/5,配置))
      // [固定值],[最少,最多]
      dmNum: [10],
      // 是否在等待时处理关注用户(读取消息,移动)
      moveUpInWait: true,
      /** 天选时刻关注 UP 移动到分组 */
      moveTag: 'rp关注',
      /** 关注回复处理方式  */
      actFollowMsg: 'read',
      // 总参与次数,达到后不管结果如何,直接结束
      totalNum: -1,
      // 连续超过多少次没有中,直接结束,小于1为不限制
      noWinNum: 10, // 避免一直运行
      // 连续疑似触发风控多少次,直接结束,小于1为不限制
      riskNum: 5, // 避免一直运行
    },
    // 自动取消关注
    unFollow: {
      // 单个取消的时间间隔(秒)
      delay: 3,
      // 中场休息,[取消数量, 休息时间(分)] 取消数量和休息时间都应该为正数(非0),否则无效
      restTime: [20, -1],
      // 总数 -1 无限制
      totalNum: -1,
      // 取消关注的 tag
      tags: ['天选时刻', 'rp关注'],
    },
    // 消息推送
    message: {
      // 换行
      br: '\n',
      // 青龙面板专属配置 企业微信通知示例如下:
      // 官方说明文档: 
      // https://work.weixin.qq.com/api/doc/90000/90136/91770
      // 下方填写密钥,企业微信推送 webhook 后面的 key
      'QYWX_KEY': "此处填写你的key",
    },
    // 投币相关
    coin: {
      // 目标等级
      targetLevel: 6,
      // 保留的硬币数
      stayCoins: 0,
      // 投币的数量(上限5)
      targetCoins: 5,
      // 自定义 up
      customizeUp: [],
      // 当获取已投币数量失败,假设已投币数量
      todayCoins: 0,
      // 是否只投指定 up
      upperAccMatch: false,
    },
    // 使用b币券
    couponBalance: {
      /** 充电的 up 默认自己 */
      mid: 0,
      /** 预设时间,哪一天?,空数组为每一天 */
      presetTime: [10, 20],
      /** 使用的方式,可以是 充电/charge 电池/battery */
      use: '充电',
    },
    // 直播间礼物
    gift: {
      // 自定义投喂礼物 UP, 在所填中随机选取
      mids: [],
      // 省略部分配置
    },
    // 亲密度
    intimacy: {
      // 直播弹幕
      liveSendMessage: true,
      // 点赞直播间
      liveLike: true,
      // 每日亲密度上限 (系统 1500)
      limitFeed: 1500,
      // 耗时很长的直播心跳(默认关闭)
      liveHeart: false,
      // 白名单
      whiteList: [],
      // 黑名单
      blackList: [],
    },
    // 漫画
    manga: {
      // 签到
      sign: true,
      // 购买漫画
      buy: false,
      // 购买漫画 id(优先级高)
      mc: [],
      // 购买漫画名称(优先级中)
      name: [],
      // 购买追漫(优先级低)
      love: true,
      // 执行购买漫画间隔时间(单位天)
      buyInterval: 2,
      // 星期几执行购买漫画
      buyWeek: [],
    },
    // 风纪委员
    jury: {
      // 模式
      mode: 1,
      // 默认投票 0-3 好-无法判断,从中随机
      vote: [0, 0, 1],
      // 没有案件不退出,运行一次直到完成
      once: true,
      // 参考人数最少满足
      opinionMin: 3,
      // 没有案件后等待时间(分)
      waitTime: 20,
    },
    // 大积分
    bigPoint: {
      // 是否间隔 5s 再重试一次,或者直接填写等待时间(秒)
      isRetry: true,
      // 是否完成观看视频的任务
      isWatch: true,
      // 正片视频的 epid(集数id)
      epids: [],
      // 领取任务后的观看延时(秒)
      watchDelay: 40,
    },
  },
]

如果使用上面的配置,需要修改四个地方:

  1. user agent 必填,点击这个网站 把红字部分填入引号中。

  2. cookie 必填,教程在上面。

  3. 是否投币请按需自行修改。(一般来说Lv6就不需要了)

    coin: {
          // 目标等级
          targetLevel: 6,
          // 保留的硬币数
          stayCoins: 0,
          // 投币的数量(上限5)
          targetCoins: 5,
          // 自定义 up
          customizeUp: [],
          // 当获取已投币数量失败,假设已投币数量
          todayCoins: 0,
          // 是否只投指定 up
          upperAccMatch: false,
        }
  4. 通知配置 建议填写

    message: {
          // 换行
          br: '\n',
          // 这里建议直接使用你青龙面板的通知方式 以企业微信举例
          // 下方填写密钥 企业微信推送 webhook 后面的 key
          'QYWX_KEY': "此处填写你的key",
          // 还可以使用以下方式
          // 'GOBOT_URL',
          // 'GOBOT_TOKEN',
          // 'GOBOT_QQ',
          // 'SCKEY',
          // 'QQ_SKEY'
          //  。。。。。。
        }

添加环境变量

  • 配置使用的 json5,兼容 json 且更加灵活,可以支持 注释

  • 务必使用 在线工具 校验 json5 格式(校验不通过无法继续使用)。

  • 将检验合格的配置文本 粘贴在 Gzip 在线压缩工具 的输入框中,选择Gzip压缩,将加密结果复制即可。

    Gzip压缩配置文本

  • 青龙面板推荐使用 环境变量 的方式配置。

    青龙面板->环境变量->新建变量 ,名称(BILITOOLS_CONFIG)、值(填写你在上一步Gzip压缩得到的文本),点击确定即可。

    添加变量

手动运行

回到青龙面板任务首页,应该会出现三个关于哔哩哔哩的任务:

bilibili任务

名称是可以自行修改的,主要看命令:

  • 第一个:更新依赖;
  • 第三个:拉库任务;
  • 第二个:主程序任务,在手动运行拉库任务后刷新可见。

在一切准备就绪后,就可以手动运行一次主任务了。

感谢

BiliTools