BiliBiliTool是一個B站自動執行任務的工具,使用.NET Core編寫,通過它可以實現B站帳號的每日自動觀看、分享、投幣視頻,獲取經驗,每月自動領取會員權益、自動為自己充電等功能,幫助我們輕松升級會員到Lv6並賺取電池
詳細功能目錄如下:
- 每天自動登錄,獲取經驗
- 每天自動觀看、分享、投幣視頻 (支持指定想要支持的up主,優先選擇配置的up主的視頻,不配置則隨機選取視頻)
- 每天漫畫自動簽到
- 每天自動直播簽到,領取獎勵 (直播可以不看,但是獎勵不領白不領~)
- 每天自動使用直播中心銀瓜子兌換B幣,避免浪費
- 每月自動使用快過期的B幣券為自己充電 (你懂的~)
- 每個月自動領取5張B幣券和大會員權益 (既然買了會員就要領取該有的獎勵啊~)
Github倉庫地址:RayWangQvQ/BiliBiliTool
本應用僅用於學習和測試,自覺愛護小破站,請勿濫用!
1.源碼
應用是一個.Net Core的Console程序,在啟動時構建了配置、日志和容器。
配置有三個源,appsettings.json文件、環境變量和命令行參數,命令行參數自己定義了一個mapper用來映射,環境變量主要用於托管在 GitHub Actions 上使用 GitHub Secrets 傳入配置。
日志使用了Serilog,輸出端有3個:Console端、Debug端和文件。
容器用的.Net Core的原生容器,需要掃描注冊的地方用了Scrutor做擴展。
我將程序核心業務放到了領域層:
Agent用來放BiliBili的Api,使用了Refit將Api映射為強類型的Interface。
Config用來放配置,大部分存放在了Options里。
DomainService內聚了我需要的領域服務,比如視頻服務、直播中心服務。將這些業務放到領域服務里,其實是故意寫成了貧血模型,因為想盡量直接使用Agent里的Dto,而不是自己再去抽象領域對象然后再自己做Map,這里將領域服務抽象出來我覺得就足夠了。
AOP:
HttpClient添加了一個DelegatingHandler,用來做B站Api的請求切面,記錄請求內容和返回內容,過濾異常;
在AppService層使用Fody做切面,用來記錄子任務的日志,需要的時候吞掉異常,以讓程序不會因為子任務失敗而阻塞。
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
- 找到
DEDEUSERID
、SESSDATA
、bili_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(DEDEUSERID
、SESSDATA
、BILIJCT
)。它們將作為應用啟動時的命令行參數被傳入程序。
c. 開啟Actions並觸發每日自動執行
Github Actions默認處於關閉狀態,前面都配置好后,請手動開啟Actions,執行一次工作流,驗證是否可以正常工作。
運行結束后,可查看運行日志:
如果執行出現異常,會收到了GitHub Action的錯誤郵件通知,請檢查Cookies是不是失效了,或者是否有bug。用戶主動清除瀏覽器緩存,會導致BILI_JCT
和DEDEUSERID
失效。
2.2.2.運行方式二:本地運行
這里就不多說了,直接clone源碼然后vs打開解決方案,配置Cookie后直接運行調試即可。
只想運行而不需要調試的,去下載Release包也行。
3.結束
項目是一個.NetCore的練手項目,所有代碼都完全開源在了GitHub上,需要的朋友可以放心使用,不要用來干壞事就行。
或者如果有什么好的想法,也歡迎到GitHub來為我PR貢獻代碼。
相信不久后我們就都是B站Level 6的大佬了,嗶哩嗶哩乾杯~~