BiliBiliTool是一个B站自动执行任务的工具,使用.NET Core编写,通过它可以实现B站帐号的每日自动观看、分享、投币视频,获取经验,每月自动领取会员权益、自动为自己充电等功能,帮助我们轻松升级会员到Lv6并赚取电池

详细功能目录如下:

  • 每天自动登录,获取经验
  • 每天自动观看、分享、投币视频 (支持指定想要支持的up主,优先选择配置的up主的视频,不配置则随机选取视频)
  • 每天漫画自动签到
  • 每天自动直播签到,领取奖励 (直播可以不看,但是奖励不领白不领~)
  • 每天自动使用直播中心银瓜子兑换B币,避免浪费
  • 每月自动使用快过期的B币券为自己充电 (你懂的~)
  • 每个月自动领取5张B币券和大会员权益 (既然买了会员就要领取该有的奖励啊~)

Github仓库地址:RayWangQvQ/BiliBiliTool

本应用仅用于学习和测试,自觉爱护小破站,请勿滥用!

1.源码

应用是一个.Net Core的Console程序,在启动时构建了配置、日志和容器。

配置有两个源,appsettings.json文件和命令行参数,命令行参数自己定义了一个mapper用来映射。

日志使用了Serilog,输出端有3个:Console端、Debug端和文件。

容器用的.Net Core的原生容器,需要扫描注册的地方用了Scrutor做扩展。

我将程序核心业务放到了领域层:

Agent用来放BiliBili的Api,使用了Refit将Api映射为强类型的Interface。

Config用来放配置,大部分存放在了Options里。

DomainService内聚了我需要的领域服务,比如视频服务、直播中心服务。将这些业务放到领域服务里,其实是故意写成了贫血模型,因为想尽量直接使用Agent里的Dto,而不是自己再去抽象领域对象然后再自己做Map,这里将领域服务抽象出来我觉得就足够了。

2.如何使用

BiliBiliTool实现自动任务的原理,是通过调用一系列B站开放的接口实现的。

举例来说,要实现观看视频的任务,只需要通过调用B站的上传视频观看进度Api即可,

接口Api:"https://api.bilibili.com/x/click-interface/web/heartbeat",

入参:视频Id、当前观看时间、用于身份认证的Cookie。

BiliBiliTool就是收集了一系列这样的接口,通过每日自动运行程序,来实现自动领取奖励、完成每日任务等功能的。

要使用BiliBiliTool,我们只需要做两步,首先是获取自己的Cookie作为配置信息,然后将配置输入BiliBiliTool程序并运行即可。

2.1.第一步:获取自己的Cookie

  • 浏览器打开并登录bilibili网站
  • 按 F12 打开“开发者工具”,依次点击 应用程序/Application -> 存储-> Cookies
  • 找到DEDEUSERIDSESSDATAbili_jct三项,复制保存它们到记事本,待会儿会用到。

CookieName Value
DEDEUSERID 从Cookie中获取
SESSDATA 从Cookie中获取
BILI_JCT 从Cookie中获取

2.2.第二步:运行BiliBiliTool

运行BiliBiliTool有两种方式,一种是通过Github的Actions实现线上的每天自动运行,一种是本地运行或调试。

对于熟悉Github Actions的朋友,推荐使用方式一 Github Actions,可以实现线上的每天自动运行,不需自己动手,一劳永逸。

对于没有Github账号的、或者想先尝个鲜快速运行一下看看、或者是开发者想要本地调试的朋友,可以跳转到方式二,操作简单快速。

2.2.1.运行方式一(推荐):Github Actions每天定时线上自动运行

Github Actions 是微软巨硬收购G站之后新增的内置CI/CD方案,其核心就是一个可以运行脚本的小型服务器(2核CPU + 7G RAM + 14 G SSD)。

有了它,我们就可以实现每天定时线上自动运行我们的应用程序。

设置步骤如下:

a. 首先fork本项目(RayWangQvQ/BiliBiliTool)到自己的仓库

b. 进入自己fork的仓库,点击 Settings-> Secrets-> New Secrets 添加以下3个Secrets(DEDEUSERIDSESSDATABILIJCT)。它们将作为应用启动时的命令行参数被传入程序。

c. 开启Actions并触发每日自动执行

Github Actions默认处于关闭状态,前面都配置好后,请手动开启Actions,执行一次工作流,验证是否可以正常工作。

运行结束后,可查看运行日志:



如果执行出现异常,会收到了GitHub Action的错误邮件通知,请检查Cookies是不是失效了,或者是否有bug。用户主动清除浏览器缓存,会导致BILI_JCTDEDEUSERID失效。

2.2.2.运行方式二:本地运行

这里就不多说了,直接clone源码然后vs打开解决方案,配置Cookie后直接运行调试即可。

只想运行而不需要调试的,去下载Release包也行。

3.结束

项目是一个.NetCore的练手项目,所有代码都完全开源在了GitHub上,需要的朋友可以放心使用,不要用来干坏事就行。

或者如果有什么好的想法,也欢迎到GitHub来为我PR贡献代码。

相信不久后我们就都是B站Level 6的大佬了,哔哩哔哩乾杯~~

【开源】使用.Net Core和GitHub Actions实现哔哩哔哩每日自动签到、投币、领取奖励的更多相关文章

  1. 基于【腾讯云函数】/【GitHub Actions】/【Docker】的每日签到脚本(支持多账号使用)

    每日签到集合 基于[腾讯云函数]/[GitHub Actions]/[Docker]的每日签到脚本 支持多账号使用 特别声明: 本仓库发布的脚本及其中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究 ...

  2. 使用Linux、Nginx和Github Actions托管部署ASP.NET Core 6.0应用

    使用Linux.Nginx和Github Actions托管部署ASP.NET Core 6.0应用 前言 本文主要参考微软这篇文档而来 Host ASP.NET Core on Linux with ...

  3. 使用 Github Actions artifact 在 workflow job 之间共享数据

    (AgileConfig)[https://github.com/kklldog/AgileConfig] 在使用 react 编写UI后,变成了一个彻彻底底的前后端分离的项目,上一次解决了把reac ...

  4. GitHub Actions 完成CI CD

    在之前我的部署.版本控制.CI.CD都是在Jenkins 下来完成的 在前几天看到github上的一个新玩具actions,简直惊为天人 它能在你的仓库触发事件(Push,Pull,issue,... ...

  5. Github原生CI/CD,初尝Github Actions

    Github 原生 CI/CD,初尝 Github Actions Intro Github 目前已经推出了自己的 CICD 服务 -- Github Actions,而且比微软的 Azure Dev ...

  6. 使用 JS 开发 Github Actions 实现自动部署前后台项目到自己服务器

    不想看前面这么多废话的可以直接跳到具体实现 Github Actions 是什么? 说到 Github Actions 不得不提一下. 持续集成(continuous integration):高质量 ...

  7. 利用 Github Actions 自动更新 docfx 文档

    利用 Github Actions 自动更新 docfx 文档 Intro docfx 是微软出品一个 .NET API 文档框架,有一个理念是代码即文档,会根据项目代码自动生成 API 文档,即使没 ...

  8. 为Github仓库添加Github Actions实现持续集成: Android apk自动编译发布以及github pages同步推送coding.net

    内容转载自我的博客 目录 说明 1. 编写Android项目的CI配置文件 2. 编写Jekyll项目的CI配置文件 2.1 配置coding.net 2.2 配置github 2.3 自动部署到co ...

  9. GitHub Actions 支持 "skip ci" 了

    GitHub Actions 支持 "skip ci" 了 Intro GitHub Actions 作为 GitHub 官方的 CI 支持,很多开源项目已经在使用 Actions ...

随机推荐

  1. Python_快速安装第三方库-pip

    如何快速安装第三方库? 通过python 豆瓣园源https://pypi.douban.com/simple/进行安装,利用国内网速 如何安装? pip -i install https://pyp ...

  2. 实验 5:OpenFlow 协议分析和 OpenDaylight 安装

    一.实验目的 回顾 JDK 安装配置,了解 OpenDaylight 控制的安装,以及 Mininet 如何连接;通过抓包获取 OpenFlow 协议,验证 OpenFlow 协议和版本,了解协议内容 ...

  3. 05 sublime环境配置及编译运行后输出中文乱码的解决

    编译后的乱码问题 编译后的输出:中文显示异常: 编译C出现乱码问题解决 解决思路:解决办法很简单,就是先设置文件编码为GBK格式,之后再输入中文文字,运行时的中文就不是乱码了. 首先,sublime中 ...

  4. STM32之旅5——IWDG

    STM32之旅5--IWDG stm32有两个看门狗,一个独立看门狗(IWDG).一个窗口看门狗(WWDG):独立看门狗是时钟源是内部的40kHz的低速时钟,即使主频出问题了,独立看门狗也不会受到影响 ...

  5. 一文带你定制unittest测试用例的名称

    在之前的文章中,我在之前的文章中提到过,这里呢,考虑后,感觉之前的写法不够优雅,于是乎呢,我自己抽空去研究了下,主要是新写方法,这样呢,以后的要使用的时候,可以直接去使用,而不是每次换个环境就要修改环 ...

  6. WSL2 bug

    错误现象 Stdout: Stderr: 2020/05/27 20:01:37 resolving /mnt/host/c/Program Files/Docker/Docker/resources ...

  7. 部署MongoDB-4.2.7

    二进制部署很简单 创建存放软件目录下载解压 存放数据和日志及配置文件路径需要手工进行创建 mkdir -p /application/tools/ cd /application/tools/ wge ...

  8. NOI 2012 【迷失游乐园】

    这道题,额,反正我是刚了2天,然后就萎了......(是不是觉得我很菜) 题目描述: 放假了,小Z觉得呆在家里特别无聊,于是决定一个人去游乐园玩. 进入游乐园后,小Z看了看游乐园的地图,发现可以将游乐 ...

  9. 洛谷UVA524 素数环 Prime Ring Problem

    标签:搜索与回溯 题目: 从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数. 算法分析: 非常明显,这是一道回溯的题目.从1开始,每个空位有20种可能,只要填进去的数合法:与前面的数不相 ...

  10. Redis 中 HyperLogLog 的使用场景

    什么是基数估算 HyperLogLog 是一种基数估算算法.所谓基数估算,就是估算在一批数据中,不重复元素的个数有多少. 从数学上来说,基数估计这个问题的详细描述是:对于一个数据流 {x1,x2,.. ...