YouTube 看着看着开始转圈,你准备换个节点,又怕把其他网站正在用的线路一起换掉。可以给视频单独留一个选节点的地方:以后看视频卡了,只动这一组。

下面用 FlClash 电脑端做这个设置。先看改完是什么样:

YouTube指定域名进入视频专用组,选择节点B;其他请求继续交给原订阅规则,原有节点A和直连安排保留。

图里的 A、B 只是举例。新分组使用的还是订阅里已有的节点,选哪条合适,要看实际播放表现。

先看看你是不是已经有了

打开 FlClash 的“代理”页,找一下有没有 YouTube 或视频分组。有的话,先用现成的分组选节点,再去“连接”页确认请求确实经过它,就不用再加一份。

没有单独分组,才往下做。你需要一份已经能正常上网的订阅;还没导入的,可以先看FlClash 入门教程。另外,把当前配置和覆写设置备份下来。已经使用其他脚本的,先保存那份代码,下面的小脚本不会把两份脚本自动合并。

把这段代码存进 FlClash

点击左侧扳手图标,进入 进阶配置 → 脚本 → 添加。打开编辑区,全选里面的示例代码,用下面这份替换。点右上角保存,名称填“我的分流”。

不需要在代码里填写账号、订阅地址或节点密码。第一次原样复制即可。

展开完整脚本,复制代码
// zhaotizi.top:给 YouTube 增加一个可以单独选节点的分组。
function main(config) {
  const groupName = "视频专用";
  const domains = [
    "youtube.com", "youtu.be", "googlevideo.com", "ytimg.com",
    "youtube-nocookie.com", "youtubei.googleapis.com"
  ];

  if (!config || typeof config !== "object" || Array.isArray(config)) {
    throw new Error("请先载入有效订阅");
  }
  if (!Array.isArray(config.rules) || !config.rules.length) {
    throw new Error("需要一份有基础规则的完整订阅配置");
  }
  const nodes = config.proxies === undefined ? [] : config.proxies;
  const groups = config["proxy-groups"] === undefined ? [] : config["proxy-groups"];
  const providers = config["proxy-providers"] === undefined ? {} : config["proxy-providers"];
  if (!Array.isArray(nodes) || !Array.isArray(groups)) {
    throw new Error("节点或分组格式不正确");
  }
  if (!providers || typeof providers !== "object" || Array.isArray(providers)) {
    throw new Error("节点集合格式不正确");
  }
  if ([...nodes, ...groups].some(item => item && item.name === groupName)) {
    throw new Error("已经有“视频专用”分组或节点,请从原订阅重新加载,或修改 groupName");
  }

  const reserved = ["DIRECT", "REJECT", "REJECT-DROP", "PASS", "GLOBAL", "COMPATIBLE"];
  const choices = [...new Set(nodes.filter(node =>
    node && typeof node.name === "string" && node.name.trim() &&
    !reserved.includes(node.name) &&
    !["direct", "reject", "pass"].includes(String(node.type).toLowerCase())
  ).map(node => node.name))];
  const providerNames = Object.keys(providers);
  if (!choices.length && !providerNames.length) {
    throw new Error("这份配置没有可供选择的节点或节点集合");
  }

  const videoGroup = {
    name: groupName,
    type: "select",
    proxies: choices,
    "empty-fallback": "REJECT"
  };
  if (providerNames.length) videoGroup.use = providerNames;

  return {
    ...config,
    "proxy-groups": [videoGroup, ...groups],
    rules: [
      ...domains.map(domain => "DOMAIN-SUFFIX," + domain + "," + groupName),
      ...config.rules
    ]
  };
}

这段脚本会加一个叫 视频专用 的分组,并把代码里列出的域名放进这个组。原来的分组、其他规则和节点仍然保留,DNS、TUN、端口也沿用当前设置。

列表里除了 youtube.com,还有视频和图片常用的域名。它是一份小清单,不能保证包含 YouTube 所有登录、接口和资源请求;没列出来的,继续按原订阅处理。

存好了还得让订阅用上它

回到左侧 配置,找到当前使用的订阅卡片,点 ⋮ → 更多 → 覆写。在覆写模式里选“脚本”,然后点选刚保存的“我的分流”。最后点左上角返回,让配置应用。

FlClash订阅卡片的更多菜单,以及在覆写页面选中我的分流的入口。

截图用来认入口;订阅名称已遮挡,流量和日期是截图时的信息。不同版本的图标位置可能略有变化。

这里容易漏的是点选脚本那一行。“前往配置脚本”负责编辑,“预览”负责看生成结果;只打开这两个页面,不能代替选中脚本。

回到代理页,找到“视频专用”。没出现就先看配置有没有报错、绑的是不是当前订阅,再重新加载配置。不要急着把订阅删掉重新买。

以后换视频线路只动这一个组

先在仪表盘把出站模式设为 规则,再到代理页打开“视频专用”,选一个实际节点。不要选“剩余流量”“套餐到期”之类的信息卡片。

例如原来的常用组用节点 A,你在“视频专用”里选节点 B。以后想试 C,就在视频组里改选 C,原来的常用组继续用 A。这个脚本没有另建“默认组”,也不会替你选出最快线路。

注意两个地方:一是要在规则模式下使用,开着全局模式时,请求不会按这份域名清单分开走;二是别顺手去改原来的常用组,否则其他网站的线路还是会跟着改变。

不用猜 看连接记录就知道了

选好节点后,在浏览器新开一个 YouTube 视频。回到 FlClash 左侧的 连接 页,分别搜索 youtube 和 googlevideo,看新出现的记录。

你要核对的是这两件事:记录经过的组里有没有“视频专用”,最后的节点是不是你刚选的 B。尤其要看看 googlevideo.com 的连接,视频能打开首页,不代表播放数据也走了同一路线。

再新开一个其他网站,看看它是否仍走原来的组或直连。这样能同时检查“视频改了”和“其他请求仍按原规则走”。

换了节点还要重新发起连接。已经建立的下载或播放连接可能继续用旧线路,不能拿它判断刚才的选择没生效。也别为了测试把所有连接一起断掉,正在通话或下载的任务可能受影响。

如果看到了“视频专用”,视频还是卡,接下来检查所选节点的播放表现,可参考看视频卡顿时该测什么。分流解决的是“走哪条路”,并不能把一条拥堵的线路变快。

想恢复原样也有入口

回到这份订阅的 覆写 页面,撤销本次脚本选择,恢复你备份的原覆写方式,再重新加载配置。脚本里的代码可以留着,之后需要再绑定。

报“已经有视频专用”时,先确认没有在处理后的配置上又套一遍脚本。如果原订阅本来就有这个名字,可以换用原组,或修改代码开头的 groupName,之后按新名字寻找分组。

订阅更新后,检查一次脚本绑定和新连接即可。域名规则的匹配顺序、手动选择组的含义,可对照 mihomo 路由规则与代理组文档。本文代码在本地样例配置上检查,实际节点效果以你的连接记录和播放结果为准。