B站W(wǎng)eb端直播分區(qū)首頁自動播放?一行過濾規(guī)則解決問題
由于筆者個人Windows設(shè)備使用居多,平常觀看B站直播主要使用的是Web端。而就在前一陣子解決了直播房間的P2P上傳占用帶寬問題之后,某天打開B站直播首頁,發(fā)現(xiàn)居中的推薦直播從默認加載靜態(tài)封面變成了自動播放,不僅占用下載網(wǎng)絡(luò)帶寬,還會自動播放聲音,這個用戶體驗可以說是非常貼心了。
那么如何取消訂閱這項貼心服務(wù)呢?首先要明確我們的目標和現(xiàn)有情況之間的矛盾點。顯而易見,我們希望的是:阻止首頁的直播自動播放。這個阻止可以有很多種達成方式,比如將播放器所在的HTML元素直接刪除、對特定網(wǎng)絡(luò)協(xié)議或請求進行攔截、刪除某個自動播放所依賴的關(guān)鍵函數(shù)等等。而具體實現(xiàn)方式的選擇則與相應(yīng)的工程量、操作難易程度和效果直接相關(guān)。
為了選出最佳的方案,筆者在相應(yīng)的頁面打開F12開發(fā)人員工具,切換到“網(wǎng)絡(luò)”一欄,對頁面的整體加載和網(wǎng)絡(luò)請求情況進行初步探索。可以看出,主頁的網(wǎng)絡(luò)請求與直播房間的請求有很多相似點,都有加載HTML+CSS+依賴JS等元素、WSS建立連接、不斷發(fā)起Fetch請求獲取直播流等操作。也就是說,我們可以大概理解為:B站的首頁自動播放≈加載首頁框架+自動打開一個直播房間并進行小窗觀看。

明確了整個加載流程,我們就可以選出最能事半功倍的方法了:只要破壞上述環(huán)節(jié)中的任意一項,就可以達成目標。但我們又要盡可能減小操作難度、降低設(shè)備資源的浪費,為此單獨寫一份JS腳本+掛載油猴之類的方案似乎有些小題大做,而且如果以后再次遇到類似的案例,管理腳本又是一份“額外功”。那么應(yīng)該選擇什么方法呢?
回到上圖中,仔細觀察網(wǎng)絡(luò)請求,一個名為home-player.min.js的文件請求似乎格外突出。從名字可以看出,這應(yīng)該是首頁的播放器本體。而他的加載位置居首,如果能將它直接攔截,后續(xù)的加載流程就可以直接省略,從而最大程度節(jié)約設(shè)備的資源。
說干就干。將這行請求右鍵,復(fù)制其URL到Adblock的自定義規(guī)則中,再啟用規(guī)則,刷新直播首頁,可以看到首頁播放器區(qū)域已經(jīng)不再加載直播內(nèi)容。


方便大家操作,這里直接貼出相應(yīng)的URL。筆者親測發(fā)現(xiàn),只添加第一條規(guī)則就可以,但為了保險起見,還是多添加一點為妙~
s1.hdslb.com/bfs/live-pkg/live-web-player/home-player.min.js
s1.hdslb.com/bfs/blive-engineer/live-web-player/home-player.min.js
至此問題解決。心情舒暢的同時,不知為何,又有點惆悵......