回到文章列表
圖文教學BilibiliCDNBrowser Extension

bilibili のカクつきが消える、ひとつの秘密の設定

海外で bilibili が重いとき、DNS の変更や VPN は運任せ。本当の原因は bilibili が割り当てる遅い CDN ノードです。拡張機能ひとつで一番速いノードに固定する方法と、Android・テレビでの対処法。

更新於 2 min30 次觀看文章語言

bilibili の動画、カクカクして止まりまくってませんか?

結論だけ:ブラウザ拡張機能を入れる

仕組みはいいから結論だけ:ブラウザにこれを入れてください(同じ機能の Tampermonkey / Violentmonkey スクリプトを入れている人は、先に削除してください)

導入前と導入後

Before

拡張機能オフ:bilibili に割り当てられた Akamai のノード(cdn=…akamaized.net)で、66 kB/s

After

拡張機能オン:同じ動画が 08ct ノード経由になり、1080P+ で 3.3 MB/s

もう少し詳しく知りたい人へ

DNS の変更や VPN が効いたり効かなかったりする理由

海外で bilibili がカクつくと、ネットで調べれば「VPN を使え」「DNS を 8.8.8.8 に変えろ」みたいな話ばかり出てきますが、どれも効くとは限りません

本当の原因は、bilibili が「遅い CDN ノード」を割り当ててくることです。上の方法は結局どれも「いいノードに当たる確率を上げる」だけで、根本的な解決にはなりません。だから効く人もいれば効かない人もいる、完全に運次第です

CDN が何なのか知りたい人は、こちらの技術ブログ記事をどうぞ:How to Actually Fix Bilibili Buffering for Good(英語)

本当の解決策:一番速いノードに固定する

本気で直したいなら、自分の地域で一番いいノードを知って、それに固定するしかありません

そのために作ったのがこの拡張機能です。普段 PC のブラウザで見ているなら、上の拡張機能を入れれば、動画が一番速いノードを通るように強制できます

Android とテレビの場合

Android で見るなら、公式アプリではなく PiliNara というサードパーティの apk を使ってください(ずっと使いやすくて広告なし)
https://github.com/Starfallan/PiliNara/releases

TV ボックスやスマートテレビなら、あの雲なんとか小電視みたいな公式アプリ(正直ひどい)はやめて、blbl アプリを使ってください
https://github.com/roge4444/blblRogerMod/releases

仕組みはどれも同じで、これらのアプリには速度テストと CDN ノードを固定する機能が入っています


最後に

以上、3 年以上いろいろハマり続けてきた僕の本音の共有です。案件ではありません

拡張機能は自分用に作ったもので、ずっと無料です。必要な人の役に立てばうれしいです。欲しい機能やバグ報告は、コメントか DM でどうぞ

入れてみてよかったら、ついでに星 5 つのレビューをもらえると励みになります。または下の GitHub リポジトリにスターをお願いします
https://github.com/a0972199950/bilibili-cdn-switcher?utm_source=lazy_cv&utm_medium=referral&utm_campaign=secret_setting_article&utm_content=ja

留言(0)

還沒有人留言,來當第一個吧!

相關文章

同一支 4K 影片開啟擴充前後:開啟前緩衝中只有 9 KB/s,開啟後 8.8 MB/s
技術分享9 min

如何真正徹底解決 Bilibili 卡頓

海外看 B 站為什麼熱門片很順、冷門片卡死:CDN 快取與回源、最窄的那一段決定速度、換 DNS 和開 VPN 為什麼時靈時不靈,以及我的擴充怎麼用台灣 14 家網路業者的實測挑出預設節點。

繁體中文 / English

CDNSpeedTest 測速進行中的畫面
圖文教學5 min

Bilibili CDN 測速 — 參加教學

圖文教學:下載 CDNSpeedTest.exe,通過網路檢查後掃碼登入,自動測完並發送報告,協助擴充功能找出各國最快的 B 站節點。

繁體中文 / 简体中文 / English / 日本語 / 한국어

B 站播放器上方的提示:目前 CDN 速度不佳,已自動切換至備援節點
技術分享11 min

在 B 站擴充裡偵測 CDN 失敗並自動切換備援節點

擴充怎麼判斷 CDN 節點真的壞了:哪些狀態碼要排除、卡頓怎麼用 currentTime 與前方緩衝判斷、為什麼先靜默換一次備援、還不行才問使用者,以及怎麼避免在節點之間來回彈跳。直播的處理方式也一併說明。

繁體中文 / English

封面:Network 面板的網域從 upos-hz-mirrorakam.akamaized.net 換成 upos-sz-mirror08ct.bilivideo.com,下方是四個 hook 點:__playinfo__、playurl API、.m4s 分段請求、直播
技術分享10 min

在 Chrome 擴充的 MAIN world 用 hook 即時改寫 Bilibili 串流 CDN

B 站的播放網址會從 SSR 的 __playinfo__、playurl API、分段請求和直播 API 進來。這篇用 bilibili-cdn-switcher 的程式碼說明每條路怎麼攔、改了什麼,以及 Response 只能讀一次、XHR responseText 唯讀、測速要繞過自己的 hook 這些坑。

繁體中文 / English

封面:越多人測,預設越準。循環四步:在家測速、拿到專屬節點、報告寄回給我、更新預設清單(cdn-list.json),再隨下一版擴充回到使用者
技術分享18 min

如何透過群眾測速自動迭代 B 站 CDN 選線品質

一支 Windows 測速程式怎麼在各地使用者家裡測 299 個 B 站節點、用分層影片和三段漏斗挑出最穩的 10 個當場寫進擴充,再把報告送回開發者,依業者市占加權改進各國預設節點,並照分析結果去補缺樣本的業者。

繁體中文 / English

封面:一份 src/ 經 build.mjs 打成 Chrome、Edge、Firefox 三個 zip(Chrome 和 Edge 是同一個 sha256),Safari 經 Xcode 工程上傳 App Store
技術分享16 min

在 B 站擴充裡用一份原始碼發佈到 Chrome、Edge、Firefox、Safari 四個商店

同一份 src/ 怎麼打包成四個商店的產物、為什麼 zip 要可重現(附實測 sha256 與換行踩坑)、5 語更新內容與 pre-push 卡點,以及一次 /release 哪些交給腳本、哪些一定自己來。

繁體中文 / English

封面:同一個網頁兩個 JS 世界。MAIN world 的 console 裡 typeof chrome.storage 是 undefined,ISOLATED world 是 object,兩邊共用 DOM 與 localStorage、用 postMessage 傳話
技術分享11 min

Chrome extension: MAIN world 與 ISOLATED world 的基本概念

content script 改了 window.fetch 網頁卻不理你?說明 MAIN 與 ISOLATED world 各自看得到什麼、三種指定 world 的方式與版本、什麼時候該拆成兩支腳本、兩邊怎麼用 localStorage 與 postMessage 傳話,以及 postMessage 要擋哪些偽造訊息。

繁體中文 / English