自从今年年初换了机场之后,我从 Shadowsocks-Windows 换到了 Clash for Windows。Clash 确实比纯 SS 好用多了,尤其是订阅功能,特别是订阅里还可以自带一系列分流规则。不过我用的那个订阅规则不够完善,想要自己添加一些。以前用 SS 的时候,我自己写了 PAC 脚本用于实现分流,当然可控性也更好,这次不方便用 PAC 了,就得研究研究 CFW 的功能了,好在有个 Mixin 可以用。

需要翻‌墙?

Blinkload 是一家综合机场,提供全线 IEPL 线路,两会、“高考”和国庆期间绝对稳定,能跑满 200 Mbps 带宽,在 YouTube 上观看 4K 视频畅通无阻,iBug 长期自用,有需求的同学可以考虑。

Blinkload 机场测速

首先给出 CFW 关于 Mixin 的说明文档

这里传入的 content 就是你的 YAML 配置文件(也可能是来自订阅的)。要访问该 YAML 中的内容,可以使用 content.key 或者 content["key"] 的方式。

例如我使用 OneDrive Business,上传下载的网址以 sharepoint.com 结尾,为了让 Clash 直连 ODB,使用 JavaScript 的 unshift() 在订阅的规则前面插入一条新规则。

cfw-profile-mixin: |
  module.exports.parse = async function({ content, name, url }, { axios, yaml, notify }) {
    content.rules.unshift("DOMAIN-SUFFIX,sharepoint.com,DIRECT");
    return content;
  }

当然有了 JS 之后还可以进行更高级的操作,比如我把订阅里的香港线路都提取出来整合成了一个 Load Balance 选项。

module.exports.parse = async function({content, name, url}, {axios, yaml, notify}) {
  content.rules.unshift("DOMAIN-SUFFIX,sharepoint.com,DIRECT");
  proxies = [];
  for (let proxy of content.proxies) {
    if (proxy.server === undefined) continue;
    if (proxy.name.indexOf('Hong Kong') !== -1) {
      proxies.push(proxy.name);
    }
  }
  if (proxies.length > 0) {
    content['proxy-groups'].push({
      'name': 'Load Balance',
      'type': 'load-balance',
      'proxies': proxies,
      'url': 'http://cp.cloudflare.com/generate_204',
      'interval': 3
    });
    content['proxy-groups'][0].proxies.unshift("Load Balance");
  }
  return content;
}

Clash for Windows 0.11.0 之后不再使用 config.yaml 里的配置,而是提供了一个 Settings 界面,可以手动输入 YAML 或者 JavaScript 作为 mixin。首先在 Mixin 那里选择模式为 JavaScript,然后在对应的 Edit 框里输入代码,保存后刷新订阅即可。

image

image

Tags:

Updated:

Leave a comment