叔叔又變質了?簡析B站PCDN技術的原理

今天一覺醒來刷某女性redbook平臺的時候,看到有人在發《b站拿用戶電腦挖礦》的帖子,不過仔細細究了一下,虛驚一場,是電腦小白在安裝uBlock Origin擴展以後(拿這個插件屏蔽B站廣告)發現刷B站視頻被攔截的請求特別多,以爲是拿用戶電腦偷偷挖礦

這是今中午我剛剛測試的

其實這根本不是什麼挖礦,只不過是叔叔和阿姨在那我們電腦做PCDN而已

很多盒友都應該發現一個問題,爲什麼明明家裏裝的千兆寬帶,播放個明明已經是低碼率的 B 站都會卡頓,尤其是一些標明高清的素材,拖動進度條播放的體驗非常差,這很可能是PCDN的原因。

這裏先解釋一下什麼是CDN,CDN全稱內容分發網絡(Content Delivery Network),是一種廣泛應用於互聯網領域的服務模式。

CDN可以看作流量負載均衡的手段

CDN 通過在網絡中部署分佈式服務器(即鏡像服務器,如上圖右邊的例子),將內容緩存到離用戶最近的服務器上,CDN 會根據用戶的地理位置等信息,自動爲用戶分配。可以避免所有請求全部湧向主服務器,減輕主服務器的負載壓力,減小視頻的延遲,提升用戶的觀看體驗(理論上,實際上叔叔拿這個偷偷搞事情)。

如圖,你的設備也是CDN

PCDN,即 P2P CDN(是的,就是迅雷那個P2P)。所有使用方既是客戶端也是服務端,一方面可以向 PCDN 發起請求獲取資源,另一方面如果其已下載過某些內容,還可能供其他客戶端下載,從而利用用戶端的閒置資源來輔助內容分發。看似是很不錯的技術?這其實是一種運營成本的轉移,利用正在看視頻用戶的閒置上行帶寬爲其他用戶提供CDN服務,這樣就把B站的運營費用轉移到了用戶身上。而且家用帶寬的上傳質量比商用帶寬差得多,反而會導致看視頻的人越多卡頓。

以R星的GTA6視頻爲例,在播放頁面右鍵打開統計信息,可以看到Video Hosts顯示了視頻資源提供方,使用的域名後綴爲“szbdyd”,即來自PCDN,哪個老哥此時電腦在爲我播放的視頻默默付出

可能出現的CDN提供方有以下幾種(統計內容來自網絡博客Lainbo's Blog):

  1. upos-sz-mirror****.bilivideo,看不同的域名對應不同的服務商方案,比如騰訊是cos/cosb等,華爲是hw,/hwb/uphw/js。

  2. cn-****-dx-v-**.bilivideo,似乎是B站在各地的自建CDN,可以看到省份和城市首字母縮寫。

  3. xxxxx(ip地址).mcdn.bilivideo,也是一種P2P形式的CDN,似乎是京東的技術,質量很差。

  4. ********.v1d.szbdyd,PCDN,質量極差,P2P 節點模式的CDN。

解決辦法也很簡單,屏蔽掉那些質量差的 CDN,讓 B 站服務器誤以爲我們連不上這些垃圾 PCDN,從而去連接高質量的 CDN,這方面插件很多,不過B站也經常更新技術,導致很多都失效了,這裏提供一個目前還有效的方法

下載油猴插件(進不去油猴官網的盒友,建議百度油猴鏡像站),名字叫Bilibili Video CDN Switcher,打開腳本編輯頁面,將第49行改爲var CustomCDN = 'upos-sz-mirror08c.bilivideo.com'或者其他CDN,這裏給出例子是華爲的CDN。

再測試一下,可以看到此時終於不是PCDN了。至於視頻質量質量到底好沒好,其實我也看不太出來

更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com