ClashX自定义配置文件管理

ClashX的设计颇有Apple产品一贯以来的风格:将最傻瓜的配置方法提供给大众,突出一个简单易用。也不是不支持一些更高级的配置方法,只是要自己摸索,很麻烦。

ClashX在自定义配置文件的管理方面就有这样的问题。软件里提供的是从链接倒入托管配置文件的方式,这种方式可以满足绝大部分使用机场的用户,只要复制机场提供的订阅链接即可,且支持自动更新,完全不用自己操心。但是,如果你想用自己搭建的节点,或者想使用自己的分流规则就比较麻烦了,因为软件根本不支持手动从文件导入配置,也不像CFW那样支持用Mixin的方式使用一组公共配置进行覆盖。

权宜之计

ClashX在托管的配置文件管理中删除某个配置文件并不会从磁盘上实际移除那个文件,在配置文件列表中也还是可以看见它。因此可以先通过配置文件托管导入任意配置文件,手动修改成你想要的形状再使用,这样也可以避免操作失误点了更新之后文件被覆盖的问题。不过这样的方式显然不太优雅。

好在clash内核提供了 proxy-providersrule-providers 两种方式来批量管理配置文件。

更优雅的管理方式

原理分析

proxy-providersrule-providers 实际上是将某些文件作为provider,在某个根配置文件中引用这些文件中的配置,从而达到配置复用、批量管理的目的。

同样的思路也可以帮助我们同时管理机场订阅和自建节点:同时引用机场的配置文件和手动添加的配置文件,机场的文件设置自动更新,而自建节点的配置手动进行更新。

使用proxy-providers

设置过程可以参考clash的非官方文档。文档中关于proxy-providers这一点已经写得非常详细。

但是配置过程中需要注意以下几点:

  • 严格遵循yaml文件的缩进要求,尤其是在进行复制粘贴的过程中。错误的缩进会导致文件无法被识别,且有时候很难找出原因
  • health-check 字段规定了节点的测速方式,原理是请求谷歌的204页面,通过计算页面请求时间得出节点的延迟。如果该项为 false 将会导致无法测速(结果全部为 失败
  • 添加了 proxy-providers 之后还需要配置 proxy groups,具体配置方法与原来是类似的,只是在引用通过 proxy-providers 导入的配置时要将 proxies 改成 use

使用rule-providers

节点添加完成之后可以配置 rule-providers 信息。这里推荐GitHub上的这个项目:

clash-rules

该项目提供了每天更新的较为完善的配置文件,且不同部分的规则都分文件管理,非常清晰

项目说明中已经提供了 rule-providers 的配置方法,这里指出几个注意事项:

  • 该规则集使用了三个策略组:DIRECTREJECTPROXY 。前面两个是clash内核自带的策略组,第三个则需要自己在 proxy-groups 中添加。也就是说 proxy groups 字段中至少应该具备如下配置:

    1
    2
    3
    4
    5
    6
    7
    8
    proxy-groups:
    - name: PROXY
    type: select
    use:
    - foo
    - bar
    proxies:
    - DIRECT
  • 这套配置文件提供了白名单模式和黑名单模式两种使用方法,二者区别在于对待没有命中规则的流量的处理方式。前者将这些流量全部交给代理,后者则会全部直连。项目说明中已经说得比较清楚了,可以根据自己的实际情况选用
  • 无论使用何种配置都需要保证 proxy-providersproxy-groups 以及 rule-providers 三个部分中的字段能够匹配,否则该配置文件无法正常使用,某些情况下还会导致无法切换到其他配置文件

关于clash分流规则和策略的更多信息可以参考文档

总结

ClashX是个人觉得macOS平台上综合使用体验最好的代理软件了,但是它没法像很多其他代理软件那样提供一个面板用来手动输入节点信息,只能通过链接下载配置或者手撸配置文件,而为了简洁性考虑手撸配置也不如CFW来得方便。好在clash内核本身提供了非常强大的配置管理方式,通过上述方式管理配置还是非常清晰高效的。

如果在配置过程中遇到问题可以参考Gist上的一份示例。发现任何错误或者有改进建议欢迎联系我指出。

参考资料

ClashX项目中的Issue