1. 程式人生 > >【開源】使用.Net Core和GitHub Actions實現嗶哩嗶哩每日自動簽到、投幣、領取獎勵

【開源】使用.Net Core和GitHub Actions實現嗶哩嗶哩每日自動簽到、投幣、領取獎勵

![2233](https://i0.hdslb.com/bfs/article/ee7f266c8ecddf0827526a089b028451e75bb97a.jpg) [![GitHub Stars](https://img.shields.io/github/stars/RayWangQvQ/BiliBiliTool?style=flat-square)](https://github.com/RayWangQvQ/BiliBiliTool/stargazers) [![GitHub Forks](https://img.shields.io/github/forks/RayWangQvQ/BiliBiliTool?style=flat-square)](https://github.com/RayWangQvQ/BiliBiliTool/network) [![GitHub Issues](https://img.shields.io/github/issues/RayWangQvQ/BiliBiliTool?style=flat-square)](https://github.com/RayWangQvQ/BiliBiliTool/issues) [![GitHub Contributors](https://img.shields.io/github/contributors/RayWangQvQ/BiliBiliTool?style=flat-square)](https://github.com/RayWangQvQ/BiliBiliTool/graphs/contributors) [![GitHub All Releases](https://img.shields.io/github/downloads/RayWangQvQ/BiliBiliTool/total?style=flat-square)](https://github.com/RayWangQvQ/BiliBiliTool/releases) ![GitHub Release (latest SemVer)](https://img.shields.io/github/v/release/RayWangQvQ/BiliBiliTool?style=flat-square) [![GitHub License](https://img.shields.io/github/license/RayWangQvQ/BiliBiliTool?style=flat-square)](https://github.com/RayWangQvQ/BiliBiliTool/blob/main/LICENSE) **BiliBiliTool是一個B站自動執行任務的工具,使用.NET Core編寫,通過它可以實現B站帳號的每日自動觀看、分享、投幣視訊,獲取經驗,每月自動領取會員權益、自動為自己充電等功能,幫助我們輕鬆升級會員到Lv6並賺取電池** 詳細功能目錄如下: * **每天自動登入,獲取經驗** * **每天自動觀看、分享、投幣視訊** *(支援指定想要支援的up主,優先選擇配置的up主的視訊,不配置則隨機選取視訊)* * **每天漫畫自動簽到** * **每天自動直播簽到,領取獎勵** *(直播可以不看,但是獎勵不領白不領~)* * **每天自動使用直播中心銀瓜子兌換B幣,避免浪費** * **每月自動使用快過期的B幣券為自己充電** *(你懂的~)* * **每個月自動領取5張B幣券和大會員權益** *(既然買了會員就要領取該有的獎勵啊~)* ![執行圖示](https://images.cnblogs.com/cnblogs_com/RayWang/1874052/o_201101081707run-exe.png) Github倉庫地址:[RayWangQvQ/BiliBiliTool](https://github.com/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,這裡將領域服務抽象出來我覺得就足夠了。 ![程式碼](https://images.cnblogs.com/cnblogs_com/RayWang/1874052/o_201101081452BiliBiliToolCode.jpg) ## 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網站](https://www.bilibili.com/) - 按 F12 開啟“開發者工具”,依次點選 應用程式/Application -> 儲存-> Cookies - 找到`DEDEUSERID`、`SESSDATA`、`bili_jct`三項,複製儲存它們到記事本,待會兒會用到。 ![獲取Cookie圖示](https://images.cnblogs.com/cnblogs_com/RayWang/1874052/o_201101081602get-bilibili-web-cookie.jpg) | 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](https://github.com/RayWangQvQ/BiliBiliTool))到自己的倉庫** b. **進入自己fork的倉庫,點選 Settings-> Secrets-> New Secrets 新增以下3個Secrets(`DEDEUSERID`、`SESSDATA`、`BILIJCT`)。它們將作為應用啟動時的命令列引數被傳入程式。** ![Secrets圖示](https://images.cnblogs.com/cnblogs_com/RayWang/1874052/o_201101081655git-secrets.png) c. **開啟Actions並觸發每日自動執行** Github Actions預設處於關閉狀態,前面都配置好後,請手動開啟Actions,執行一次工作流,驗證是否可以正常工作。 ![Actions圖示](https://images.cnblogs.com/cnblogs_com/RayWang/1874052/o_201101081717run-workflow.png) 執行結束後,可檢視執行日誌: ![Actions日誌圖示](https://images.cnblogs.com/cnblogs_com/RayWang/1874052/o_201101081614github-actions-log-1.png) ![Actions日誌圖示](https://images.cnblogs.com/cnblogs_com/RayWang/1874052/o_201101081629github-actions-log-2.png) *如果執行出現異常,會收到了GitHub Action的錯誤郵件通知,請檢查Cookies是不是失效了,或者是否有bug。使用者主動清除瀏覽器快取,會導致`BILI_JCT`和`DEDEUSERID`失效。* #### 2.2.2.執行方式二:本地執行 這裡就不多說了,直接clone原始碼然後vs開啟解決方案,配置Cookie後直接執行除錯即可。 只想執行而不需要除錯的,去下載Release包也行。 ## 3.結束 專案是一個.NetCore的練手專案,所有程式碼都完全開源在了GitHub上,需要的朋友可以放心使用,不要用來幹壞事就行。 或者如果有什麼好的想法,也歡迎到GitHub來為我PR貢獻程式碼。 **相信不久後我們就都是B站Level 6的大佬了,嗶哩嗶哩乾杯~~**