优雅地在B站客户端观看港澳台新番

声明

不提供涉及 APP 的下载及其他使用教程

前提

知道 QuanX 的基本使用逻辑,以及基本的概念有自我修改部分代码能力和上 github 或者其他托管代码平台的能力

学习资源来源

脚本原作者仓库[1]Bili_Auto_Region 脚本[2]

效果

效果 1

进入 B 站客户端进入『首页』,点击『追番』找到番剧『进击的巨人最终季』点击进入,脚本会自动将代理节点切换设置的代理分组如果出现『找不到页面』,点击页面的『重新加载』或刷新页面,进入番剧观看页面,正常观看退出观看页,脚本自动切换为直连

效果 2

进入 B 站客户端点击『输入框』输入『进击的巨人 港』脚本自动切换代理分组页面显示『进击的巨人』番剧结果点击『立即观看』,进入观看页

实践

准备

带有 ios 系统的 iPhone一个 QuanX App『Bili_Auto_Region 脚本』

修改原有脚本

到『脚本原作者仓库』,fork 该仓库

加入『StreamingSE』规则集(必须)

# 绑定相关select或static策略组,并且需要具有相关的区域代理服务器纳入您的子策略中,子策略可以是服务器也可以是其他区域策略组.

设置该规则集的『策略偏好』为自己的『父策略组』(例如我设为 『BiliGroup』)

添加几个子策略组(如台湾 or 香港)(这里涉及到策略组的节点选择策略,自己了解)

修改 Surge/JS/Bili_Auto_Regions.js,提交更改

//找到如下代码块,删除如下中文,修改成自己创建的策略组名 const Group = $.read(BiliArea_Policy) || 你的父策略组(BiliGroup); //Your blibli policy group name. const CN = $.read(BiliArea_CN) || DIRECT; //Your China sub-policy name. const TW = $.read(BiliArea_TW) || 台湾子策略组; //Your Taiwan sub-policy name. const HK = $.read(BiliArea_HK) || 香港子策略组; //Your HongKong sub-policy name. const DF = $.read(BiliArea_DF) || 请求失败后的策略组; //Sub-policy name used after region is blocked(e.g. url 404) const off = $.read(BiliArea_disabled) || 在某些wifi下不转换策略组; //WiFi blacklist(disable region change), separated by commas. const current = await $.getPolicy(Group);

在 QuantumultX/ 目录下(或其他目录),新增两个文件,一个『分流』,一个『重写』,举例:

#『重写』引用:Bili_Region.conf# start-------------hostname = ap?.bilibili.com, ap?.biliapi.net^https:\/\/ap(p|i)\.bili(bili|api)\.(com|net)\/(pgc\/view\/v\d\/app\/season|x\/v\d\/search\/defaultwords)\?access_key url script-response-body 你的用户名/Script/master/Surge/JS/Bili_Auto_Regions.js# 适用于搜索指定地区的番剧(该脚本为『效果2』的实现,根据自身需要选择)^https:\/\/ap(p|i)\.bili(bili|api)\.(com|net)\/x\/v\d\/search(\/type)?\?.+?%20(%E6%B8%AF|%E5%8F%B0|%E4%B8%AD)& url script-request-header 你的用户名/Script/master/Surge/JS/Bili_Auto_Regions.js# end--------------#『分流』引用:Bili_Region.list# start-----------------ip-cidr, 203.107.1.1/24, reject# end--------------------

打开 App;将以上两个文件『分流』与『重写』分别引用;

最后,在 QuanX -> 其他设置 -> VPN 中,关闭 MPM(温和策略机制)

至此,所有需要做的都已经完成,此时,进入 B 站客户端,实现以上的效果

Why?

为什么?这部分将对『实践』中的部分操作做解释。

为什么 fork 仓库?

因为需要修改原脚本相关分组的名字,这部分由自己定义;而且涉及到『重写』与『分流』引用,虽然不是必须,但是强烈建议这样做;可以方便地管理这些规则的开关;

为什么关闭 MPM

主要是在切换策略时打断之前的连接,让策略生效(个人认为)

已知问题

在长时间使用 B 站一段时间后,会发现脚本有失效情况,这个时候退出 B 站重新进入可以解决。

最后

如果有代码方面的相关问题,请到原作者脚本仓库上提 issue。

如果有关于以上实践部分的问题,可以在下方评论提问。本教程也是参考了原脚本的注释部分,自己实践得来,建议在问之前把注释看一遍;不提供除实践部分之外的问题。如果是我知道的,我会提供关键词给你,然后请自己去问谷歌。

参考资料

[1]

脚本原作者仓库:

[2]

Bili_Auto_Region脚本: /blob/master/Surge/JS/Bili_Auto_Regions.js