最近 b 站速度明显下降了,在和室友讨论了一下之后得出结论应该是 b 站分发的 cdn 节点比较阴间,然后在 ai 大人的帮助下搞了个插件来自由选择 cdn, 效果十分明显,从原本的 200kbps 到 6-7mbps 左右, 就是预加载视频时候慢点(大概要个三四秒钟来确认用哪个 cdn),如果人在海外的兄弟姐妹看 b 站的话有需要可以试试看这个插件 QAQ
思路: 之前改过 nondanee 大佬的 NetEaseMusicWorldPlus 从 manifest v2 到 v3,所以稍微了解了一下脚本怎么劫持并且注入 163 来改 cdn 和 x-real-ip 的. 然后我之前做过一个 cli 工具来下载 b 站音频,所以对 b 站的视频配置也有了解,我就想着靠同样的思路来改 b 站分配给我的 cdn(本身想用 setInterval 一把梭的,但是 gemini 和我说这个有点太蠢了)
实现:
- 正则替换域名
- 劫持 b 站写死的 playinfo 来拿变量
- XHR 来校验 url
- 备份 fetch 为 rawfetch 拉取分片,剔除不好使的节点
- DNR 做一个匹配,拦截重定向 request
- serviceworker 来做调度,监听事件和测速脚本
插件地址 https://chromewebstore.google.com/detail/bilibili-cdn-switcher/eapldjejnjibjmkcapdicobndgigodeg 项目地址 https://github.com/zk39/bilibili-cdn-switcher