打造自己的 Clash 配置并提供订阅
24/04/23 更新:修改示例配置文件为 Clash Meta (mihomo) 格式并微调规则
一般来说,机场提供的配置文件一键订阅会处理好代理和分流的问题,足够使用了。但由于包括但不限于:
有多个机场、或者有自建的节点想同时使用
机场的规则过于臃肿、或者不能涵盖自己需求
等原因,总有人想要写一份完全符合自己需要的配置。我就一直有这种想法,最近终于付诸实施,并且还顺便了解到如何将这样一份配置托管到网上,让不同设备可以通过链接直接订阅,因此在这里简单记录一下过程,方便有同样需求的人参考。
一、Proxy Provider 转换
Proxy Provider 是 Clash 提供的一项功能,可以单独引入一些代理服务器信息,插入到当前配置文件中以供使用。有的机场直接提供了 Proxy Provider 链接,有的没有,在后一种情况下就需要将机场的配置文件订阅链接加以转换,提取出其中代理服务器部分。
Proxy Provider Converter 是一项提供这种转换的公开服务,可以直接使用。然而这样有两个问题:(1) 该服务的提供者可以看到你的订阅地址 (2) vercel.app 在国内无法访问。这样编写的配置文件需要可用代理才能下载代理信息,而又要下载了代理信息才能获得可用代理。(扔桌子.jpg)
好在开发者提供了简便的自行部署方法。根据网页上的说明部署到 Vercel 后就解决了上述第一个问题,而要解决第二个问题就需要有一个自己的域名,并在 DNS 解析处添加一项 CNAME 记录,指向 cname-china.vercel-dns.com
,随后在 Vercel 自己部署的项目中找到 Settings-Domains
,添加自己刚刚做好解析的完整域名,就能通过这个没有被墙的域名使用转换服务。如果你没有域名,又信任我不会偷看你的订阅的话,也可以使用我自己的这个:https://a.ppconverter.eu.org。
二、编写配置文件
Clash Meta 配置文件的基本格式官方 Wiki 有足够详尽的说明,有兴趣可以自己阅读,这里就不重复解释了,直接提供一个通用的配置(注意需要在 proxy-providers
中粘贴自己转换得到的链接):
1 | mode: rule |
我没有能力手写成千上万的规则,而是引入了 Geosite 以及与 Proxy Provider 类似的 Rule Provider,直接使用这些第三方规则集。Clash 的规则是从前到后依次匹配的,已经匹配到的流量就不会向后继续匹配。值得注意的情况有:
OpenAI 服务有单独的策略组,用于选择解锁节点;
尽管
streaming
规则集中包括了 YouTube,但我还是将 YouTube 规则单列出来放在前面,如果有送中节点的话可以免广告看 YouTube;Steam 登录和下载一直是老大难问题。以前使用机场规则时,我的经验是(国区)需要在登录时将
Steam
和Others
代理组都选为直连,登录后再改为需要的代理节点,这样才不会无法登录,下载节点是国内,同时也能访问好友列表、创意工坊等内容。如今自己写的规则先将 steamCN 规定为直连,再把剩下的 steam 流量用一个代理组选择代理节点,体验就基本完美了。
当然这只是一个追求最大通用性的内容,你也可以自行修改增加需要的规则。比如我实际使用的规则中还包括一条 DOMAIN,***.sharepoint.com,MyOneDrive
,再在 proxy-groups
里添加 MyOneDrive
这一策略组和所需的节点,这样在我向 5T OneDrive 上传视频时可以切换为直连节约流量,观看时又打开代理来保障体验。不过请注意,出于规则匹配顺序的原因,一般自己修改的这些规则都应该放在较为靠前的位置。需要自行添加规则可优先到上述的 Geosite 中寻找,如果没有或对效果不满意,单独的规则集也可以在这些地方找到:
https://github.com/Loyalsoldier/clash-rules 简洁明了,注意需要设置为 behavior: domain
https://github.com/blackmatrix7/ios_rule_script/tree/master/rule/Clash 非常全面,behavior: classical
https://github.com/DivineEngine/Profiles/tree/master/Clash/RuleSet 知名选择,behavior: classical
这些规则集提供的 https://raw.githubusercontent.com
地址在国内通常无法访问,只需要在前面加上 https://mirror.ghproxy.com/
,组成 https://mirror.ghproxy.com/https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/proxy.txt
这样的 URL 就好。
三、托管并订阅
得到这样一份可以使用的配置文件后,当然可以在各个设备间手动拷贝并导入软件,但这样本身很麻烦,如果之后需要修改的话还要重复一遍流程,更加糟糕。因此,我们最好把它托管到互联网上,让各个设备订阅托管的网址,修改也只需要变更网络上这一份,完成后各个设备更新一下订阅就好。
打开 GitHub Gist,Gist description
不用填,Filename including extension...
填入包括拓展名的文件全名,如 myconfig.yaml
,将配置文件的全部内容粘贴进去,最后点右下角绿色按钮发布。
然后打开刚刚发布的 Gist,点击右上角的 Raw
,复制当前的的地址,如:
https://gist.githubusercontent.com/githubusername/1234567890/raw/0987654321/myconfig.yaml
将 /raw/
之后的第二串随机数删除,得到形如:
https://gist.githubusercontent.com/githubusername/1234567890/raw/myconfig.yaml
的 URL,再在开头添加上 https://mirror.ghproxy.com/
,随后在任意使用 Clash Meta 内核的 Clash 图形化客户端中添加这一订阅链接,等所需文件下载完成后就可以正常使用了。
打造自己的 Clash 配置并提供订阅