如何优雅地为 Clash 添加自定义代理规则?这是你要看的最后一篇教程

327 天前
 studyingss

前言

上一篇文章里很多人想学怎么为 Clash 自定义教程,所以尽量快地写出来了。

只要利用好 gist 和订阅转换,为 Clash 添加规则并不难,既不用自己写工具,也不用自己买台服务器。

看完这篇文章,只需要短短 4 步,你就可以实现:

下面是正文,原文链接在 https://luxirty.com/article/custom-clash-rule 内容跟这里没区别,只多了一两句话

所需工具

一、创建远程配置

这一步仅仅是准备工作,你只需要跟着教程做就好,不需要在意细节,等看完整篇教程再回来关注细节也不迟。

打开 https://gist.github.com/ 创建一个新的 gist

为了方便理解,我们从一个非常简单的配置开始

把下面这个 gist 中的所有内容复制到你自己的 gist 里,然后点 create secret gist

https://gist.github.com/miaomiaoclub/8afa34d1be421f9ac14ee5f872865bdb/e7e660e7796e82f6d00c46756b2e593494cd8961

完成之后来仔细查看一下这段配置文件,它实际上就只有两项配置:

# 定义了规则
ruleset=
# 定义了分组
custom_proxy_group=

暂时不需要关注更复杂的细节,下面会讲。

二、创建你自己的代理列表

再新建一个 gist ,这个 gist 里写你自己需要代理的域名,一行一个。

格式如下:

DOMAIN-SUFFIX,google.com

如果想要指定 IP ,格式是

IP-CIDR,1.201.0.0/24,no-resolve

完成之后是这样:

https://gist.github.com/miaomiaoclub/76a9b5dbaad3203f9617dd69b4c74ea5

以后想添加需要走代理的域名,修改这个 gist 就可以。

三、将代理列表加入规则中

打开上一步创建的代理列表 gist ,点击 “raw”,把整段 URL 复制出来:

https://gist.githubusercontent.com/miaomiaoclub/76a9b5dbaad3203f9617dd69b4c74ea5/raw/0d15083648bda2d0420b9260632736eceb4dcb3c/yourlist.list

删掉“raw”后面的所有部分: https://gist.githubusercontent.com/miaomiaoclub/76a9b5dbaad3203f9617dd69b4c74ea5/raw/yourlist.list 这里我保留了文件名,删掉也可以,随你喜欢,只要能打开就行。

回到第一步创建的 gist ,添加一行,其中后面的链接用上面得到的

ruleset=🚀 节点选择,https://gist.githubusercontent.com/miaomiaoclub/76a9b5dbaad3203f9617dd69b4c74ea5/raw/yourlist.list

完成之后是这样(第 12 行是新添加的):

https://gist.github.com/miaomiaoclub/8afa34d1be421f9ac14ee5f872865bdb/03a5288b68c0fdb780e6e533c70ade4aff65b3a8

四、订阅转换

打开你平常爱用的订阅转换。

任意一个都可以,请不要发“偷订阅”之类的回复。

由于上个帖子有人恶意揣测,这里不贴链接和截图,自行 Google 。

打开之后先像平常一下在订阅链接里填上订阅。

重点来了。

打开第一步创建的 gist ,点击 raw ,一样把 URL 中 raw 后面的内容全部删掉,粘贴到“远程配置”一栏,注意,粘贴进去之后还需要在下拉框点击一下。

五、完成

像平常一样点击生成订阅链接,到 Clash 中订阅,一切就完成了。

六、一些后记

在这篇教程的例子中,我将 chatgpt 添加到了代理列表中,如果你还没理解如何做到的,请再看一下第二步创建的配置文件。

我相信你的好奇心和求知欲还想做更多操作,所以你应该会想看看官方文档:https://github.com/tindy2013/subconverter/blob/master/README-cn.md

一个关于性能的小 tip

subconverter 默认展开规则,但实际上 rule provider 的性能更好,在正文里没有提到这点是因为开启这个选项可能导致无法订阅,因为 clash 更新 provider 是通过直连。

如果有能力,最好还是使用 provider ,ip-cidr 和 domain 两种类型的 rule set 可以带来非常大的速度提升和内存节省,stash 的 wiki 里也有提到这一点,具体原因和解释可以看 https://t.me/AirixCloud/36

如果你觉得这个帖子有用的话,希望不要只点击收藏,可以回复来讨论或者提问,或者点一下标题下面的箭头,我更希望和各位有更加直接的交流,不需要担心自己提的问题过于简单,感谢~

27276 次点击
所在节点    分享创造
61 条回复
Moha
327 天前
感谢分享
paststrange
327 天前
airixcloud 所说的 rule-set 不要展开是啥意思
studyingss
327 天前
@paststrange “subconverter 默认展开规则,但实际上 rule provider 的性能更好”,所以推荐使用 provider
要了解 provider 可以看 clash 的官方文档 https://dreamacro.github.io/clash/premium/rule-providers.html
或者 https://lancellc.gitbook.io/clash/clash-config-file/proxy-provider

要让 subconverter 不展开规则,在订阅链接末尾加上&expand=false ,但是又可能导致订阅无法使用,原因正文说过了。

说得直观一点,就是打开配置文件,如果 rule 里全部都是域名和 ip ,那么规则就是展开的,这时性能非常差,并且占内存。
如果 rule 下面是 RULE-SET ,那么就叫做不展开,这时性能更好,匹配速度更快( 34 万规则 7 微秒),内存占用更小。

另外,rule set 也分类型,classic 没有优化作用,ip cidr 和 domain 有强力的优化作用,这部分具体还是看 https://lancellc.gitbook.io/clash/clash-config-file/proxy-provider
DemoJameson
327 天前
如果用 Clash.Meta 内核也能从 rule provider 获益么
lekai63
327 天前
现在完全切换到 clash meta 了。感觉不需要订阅转换了。
jiezhi
327 天前
感谢分享 回去试试
canbingzt
327 天前
我是用 parsers 来添加的
Helsing
327 天前
@studyingss #3

不用 classic ,订阅规则都不好找

按照你觉得做法维护起来也不简单,还不如搭建 subconverter ,搭好了省心的很
studyingss
327 天前
@Helsing 你真的有看正文吗?
luckyjoe
327 天前
收藏 有空了整
studyingss
327 天前
@Helsing 从你的回复我大致可以确定你完全不懂,但是为了以防可能的误解,以及你的回复误导别人,我针对你提出的两个问题详细解释一下。

第一个,关于 provider

参考 https://lancellc.gitbook.io/clash/clash-config-file/rule-provider

classic 类型的 provider 的格式是


```
payload:
- '.blogger.com'
- '*.*.microsoft.com'
- 'books.itunes.apple.com'
```

domain 类型的 provider 的格式是

```
payload:
- DOMAIN-SUFFIX,google.com
- DOMAIN-KEYWORD,google
- DOMAIN,ad.com
- SRC-IP-CIDR,192.168.1.201/32
- IP-CIDR,127.0.0.0/8
- GEOIP,CN
- DST-PORT,80
- SRC-PORT,7777
```

你说的“订阅规则都不好找”是什么意思?你要说是找不到文件,配置文件里路径写的明明白白的,正常使用情况下也不用手动找。但是如果你的意思是“- DOMAIN-SUFFIX,google.com”比“.blogger.com”更容易看我觉得更奇怪。

第二,“不如搭建 subconverter”,你真的有搭建过吗?我搭建过。你知道自定义规则需要怎么做吗?依然需要写这个格式的配置。

对比来说,我的教程只是把自建的时候写到“配置文件”部分的内容,移动到了“外部配置”这部分,我很想知道你说的省心是指省心在哪里?

给其他人:关于这部分内容,可以参考
https://github.com/tindy2013/subconverter/blob/master/README-cn.md

或许你的语言表达有误,但是单从你的这一条回复来说是基本概念没有分清的状态。
azhangbing
327 天前
这个非常有用 我用 clash for window 的 diff 很不好用 不会自动合并订阅的变化 每次要手动加
Helsing
327 天前
@studyingss #11

我搭 subconverter 用了快两年了,我不懂……

另外,你把 domain 和 classic 写反了
dl123100
327 天前
虽然远程配置就是加上&config=,但是因为出过 RCE ,明面上支持远程配置的 subcoverter 公益站不多吧,很多连上传配置功能实际都没法用。
studyingss
327 天前
@Helsing 手滑贴反了,那么请你回答一下两个问题?省心在哪里?又不方便看在哪里?
Helsing
327 天前
@studyingss #11

要加自定义规则也很简单:

1. 熟悉 subconverter 的话,加一个 provider 并不比你这样操作麻烦多少

2. 如果不是在 openclash 这样的客户端用的话,桌面端基本都有 parser 可以添加规则,不比你这个要方便?
hfl1995
327 天前
ruleset=🎯 V2EX,https://raw.githubusercontent.com/lageev/chatgpt-openclash/main/v2ex.list
ruleset=🎯 Chatgpt,https://raw.githubusercontent.com/lageev/chatgpt-openclash/main/chatgpt.list

我平时需要自定义的就是 ChatGPT 和 V2 ,V2 节点要是选不好,容易进不去或者不显示头像
civelxu
327 天前
Rule Provider 支持在 clashX 上使用吗?
Mac 上的 clash for windows 体验太差。
Hoshizora
327 天前
meta 和 premium 内核不是支持代理和规则集的订阅吗? proxy-provider 和 rule-provider 一起使用会更方便啊,还能通过 clash 自身来管理订阅的更新,配置文件也跟简洁
thet
327 天前

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/949462

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX