openclash自定义配置订阅规则-yaml配置导入
引言
OpenClash 是基于 Clash 核心的路由器科学上网插件,以其强大的功能和灵活的配置深受用户喜爱。虽然通过订阅链接导入配置已经非常方便,但对于更高级的用户来说,仅仅依赖订阅配置可能无法满足精细化的需求,例如:
特定应用分流: 让某个应用走直连,另一个应用走代理。
广告屏蔽: 集成广告过滤规则,打造纯净网络环境。
游戏加速: 为特定游戏流量选择最优代理节点。
多订阅融合: 将多个机场的节点整合到一起,实现负载均衡或故障转移。
本地设备管理: 为家庭网络中特定设备设置独立的代理策略。
这时,深入学习 YAML 配置,并掌握自定义规则的管理方式,将为你带来前所未有的掌控力。
第一部分:使用背景与目的
为什么要自定义 OpenClash 规则?
订阅链接通常是机场根据其通用策略生成的,可能无法满足所有用户的个性化需求。自定义规则让你能够:
精细化分流: 根据域名、IP、进程等条件,决定流量是直连、代理还是拒绝。
增强隐私与安全: 强制某些敏感应用或网站走代理,避免泄露真实 IP。
提高效率: 将不必要的代理流量直连,减轻代理节点负担,提高访问速度。
整合与优化: 合并不同订阅源的节点,或叠加自定义规则集,实现更强大的功能(如分地区代理、流媒体解锁等)。
解决冲突: 避免不同机场规则间的冲突,保持配置整洁有效。
YAML 配置导入 与 订阅链接转换的优劣势对比
在 OpenClash 中,你可以通过两种主要方式来管理配置:
通过订阅转换/在线生成覆写规则,教程可见这一篇:openclash自定义配置订阅规则-订阅转换 | 神秘领域
本教程主要聚焦于通过 YAML 文件直接导入或在 OpenClash 界面进行配置编辑,实现高级的自定义管理。
第二部分:理解 OpenClash 的规则管理与 YAML 基础
OpenClash 的配置文件核心是 config.yaml
。它定义了代理节点、代理组、路由器规则等所有关键内容。
YAML 语法快速入门
YAML (YAML Ain't Markup Language) 是一种人类可读的数据序列化语言。它的语法非常简洁:
键值对 (Key-Value Pairs):
key: value
。注意冒号后面必须有一个空格。示例:
port: 7890
缩进 (Indentation): 使用空格来表示层级关系,严禁使用 Tab 键。通常使用 2 个或 4 个空格。
示例:
<YAML> proxy-groups: - name: 🚀 节点选择 type: select proxies: - 自动选择 - 香港节点1
列表 (Lists): 使用
-
开头表示列表项。示例:
proxies: - name: "香港节点1" type: Vmess server: server.hk.com port: 443
注释 (Comments): 使用
#
开头表示注释,不会被程序解析。示例:
# 这是一个注释
第三部分:自定义规则的配置步骤
要自定义管理 OpenClash 规则,最核心的步骤是理解并编辑其 YAML 配置文件。
步骤 1:获取基础配置
你有两种获取 OpenClash 基础配置的方式:
从 OpenClash 导出当前配置 (推荐):
进入 OpenClash 界面。
点击 "配置文件管理" -> "配置编辑"。
页面的内容就是你当前正在使用的配置。你可以直接将其复制出来保存到本地文本编辑器中(如 Notepad++, VS Code),以便修改。
优点: 包含你 OpenClash 当前的所有设置,在此基础上修改更稳妥。
从 PC 端 Clash 客户端导出配置:
在 PC 端的 Clash 客户端(如 Clash for Windows)中导入你的订阅。
通常在设置或配置文件页面会有“导出配置”或“编辑配置”的选项,将其保存为
.yaml
文件。优点: 初始配置通常比较规范。
缺点: 导出的 YAML 文件可能不包含 OpenClash 独有的设置(如日志级别、外部控制器地址等),需要手动添加或从 OpenClash 中补齐。
步骤 2:选择合适的文本编辑器
推荐使用支持 YAML 语法高亮和代码提示的编辑器,强烈建议使用 VS Code,配合 YAML 插件,能有效避免语法错误。
步骤 3:核心规则模块讲解与自定义
一个典型的 Clash YAML 配置主要包含以下几个核心模块:
proxies
: 定义具体的代理节点。proxy-providers
: 定义外部代理订阅源,让 Clash 自动拉取节点。proxy-groups
: 定义代理选择组(如选择、自动选择、负载均衡等)。rule-providers
: 定义外部规则集,方便管理和更新大量规则。rules
: 定义流量分流规则。
我们将主要精力放在 proxy-providers
、rule-providers
、proxy-groups
和 rules
上。
A. proxy-providers
(外部代理订阅源)
这是管理订阅节点的最佳方式。对比直接将节点写在 proxies
下,使用 proxy-providers
更方便更新。
# proxy-providers: 定义外部代理订阅源(Clash Meta/Premium 才支持)
proxy-providers:
# 第一个订阅源:来自机场 A
MyAirportA: # 订阅源的名称,自定义,不可重复
type: http # 获取方式,http 或 file
url: "https://your_airport_a_subscribe_url" # 你的机场订阅链接
interval: 86400 # 自动更新间隔,单位秒(86400秒 = 24小时)
# path: ./providers/MyAirportA.yaml # 订阅下载后保存的路径,OpenClash会自动处理,一般不用手动设置
health-check: # 健康检查,用于判断节点是否可用
enable: true # 开启健康检查
url: https://www.gstatic.com/generate_204 # 健康检查的URL
interval: 300 # 健康检查间隔,单位秒(300秒 = 5分钟)
filter: "香港|台湾|新加坡" # 过滤器:只保留名称中包含“香港”、“台湾”或“新加坡”的节点
#exclude-filter: "测试|专线" # 排除过滤器:排除名称中包含“测试”或“专线”的节点
# 第二个订阅源:来自机场 B
MyAirportB:
type: http
url: "https://your_airport_b_subscribe_url"
interval: 3600 # 1小时更新一次
health-check:
enable: true
url: https://cloudflare.com/cdn-cgi/trace
interval: 300
# filter: "CN|JP|US" # 示例:如果你的机场节点名称有国家代码
# ... (你的 proxy-groups 和 rules 会在下面引用这些订阅源)
要点:
filter
和exclude-filter
是非常强大的功能,可以帮助你筛选出你需要的节点。health-check
用于确保节点可用性,影响url-test
组和自动选择组的判断。
B. rule-providers
(外部规则集)
你可以使用第三方维护的规则集(如 ACL4SSR
、lhie1
等),这些规则集通常更全面,且会自动更新。
# rule-providers: 定义外部规则集,用于分类流量
rule-providers:
# 常见的广告屏蔽规则
Ads:
type: http
behavior: domain # 规则类型:domain(域名)、ipcidr(IP段)
url: "https://raw.githubusercontent.com/BlackJack8/OpenClash/master/Rules/AdBlock.list" # 替换为实际规则链接
interval: 86400 # 24小时更新一次
path: ./ruleset/Ads.yaml # 规则下载后保存路径,OpenClash会自动处理
# 国内媒体直连规则示例
DomesticMedia:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/BiliBili/BiliBili.list"
interval: 86400
path: ./ruleset/DomesticMedia.yaml
# 常见域名直连规则
DirectDomain:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/direct-domain.txt"
interval: 86400
path: ./ruleset/DirectDomain.yaml
# 苹果服务代理规则
Apple:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/apple.txt" # 替换为实际规则链接
interval: 86400
path: ./ruleset/Apple.yaml
# 游戏规则示例
Game:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/game.txt"
interval: 86400
path: ./ruleset/Game.yaml
# ... (你的 rules 会在下面引用这些规则集)
要点:
behavior
非常重要,通常是domain
或ipcidr
。interval
控制更新频率。
C. proxy-groups
(代理组)
这是路由策略的核心。你可以将节点组织成不同的组,并定义组的类型(选择、自动选择、负载均衡等)。
# proxy-groups: 定义代理组
proxy-groups:
# 核心入口组:选择所有策略的入口
- name: 🚀 节点选择 # 组的名称,将显示在面板上
type: select # 类型:select(手动选择)、url-test(测速自动选择)、fallback(故障转移)、load-balance(负载均衡)
proxies:
- 自动选择 # 引用下面定义的自动选择组
- 直连 # 引用下面的直连组
- MyAirportA_Test # 引用下面的测速组
- 台湾 # 可以是具体的节点组
- 香港 # 可以是具体节点组列表,或者直接引用provider内容
- Singapore # 也可以是provider内容
# 除了引用下面的组,你可以在这里直接引用 proxy-providers 下的节点(通过其名称)
# 测速自动选择组:根据测速结果自动选择延迟最低的节点
- name: 自动选择 # 组的名称
type: url-test # 类型为 URL 测试
url: "http://www.gstatic.com/generate_204" # 测速URL
interval: 300 # 测速间隔,300秒(5分钟)
tolerance: 50 # 容忍度,每次选出最差节点超过最优节点多少毫秒时进行切换
# 在这里引用 proxy-providers 中的所有节点
# 语法为 `<ProviderName>` 例如 `$MyAirportA`
# 注意 OpenClash 会自动将其替换为实际节点列表,但这里写 `proxies: ['MyAirportA', 'MyAirportB']` 也是可以的
proxies:
- "$MyAirportA" # 引用 MyAirportA 订阅源中的所有节点
- "$MyAirportB" # 引用 MyAirportB 订阅源中的所有节点
# 也可以手动列出具体的节点名称
# - MyAirportA-HK01
# - MyAirportB-JP03
# 国外流量回源组:如果自动选择的节点都不可用,则尝试此组中的节点
- name: 🎯 国外回源
type: fallback
url: "http://www.gstatic.com/generate_204"
interval: 300
proxies:
- 自动选择 # 可以引用上面的组
- 直连 # 如果所有代理都挂了,就直连
# 其他策略组示例:
- name: 📺 流媒体
type: select
proxies:
- 自动选择 # 可以让流媒体走自动选择的节点
- 台湾 # 或者指定走特定地区的节点
- "$MyAirportA" # 也可以引用整个供应商的所有节点
- name: 🛑 广告拦截
type: select
proxies:
- REJECT # 广告拦截通常直接拒绝连接
- 直连 # 或者选择直连
- 🚀 节点选择 # 或者走代理
- name: 🇨🇳 中国媒体
type: select
proxies:
- 直连 # 中国媒体通常直连
- 🚀 节点选择 # 如果直连卡,走代理
# 直连组:所有不走代理的流量最终都指向这里
- name: 直连
type: direct # 直连类型,不经过任何代理
# 拒绝组:用于拦截或阻止连接
- name: REJECT
type: reject # 拒绝类型,直接断开连接
要点:
proxies
列表中的顺序决定了下拉菜单中的显示顺序。$ProviderName
语法用于引用proxy-providers
下的所有节点。Clash 会按照
proxy-groups
中定义的顺序,从上到下查找。
D. rules
(流量分流规则)
这是流量走向的最终决策者。规则会从上到下依次匹配,一旦匹配成功,就会执行对应的策略。
策略组的引用: rules
中引用的策略组必须在 proxy-groups
中定义。
# rules: 定义流量分流规则
# 规则的匹配顺序很重要,从上到下匹配,匹配到第一条就会停止。
# 所以越准确/精确,范围越小的规则,越往上放。越泛、越通用的规则越往下放。
rules:
# 优先匹配特定域名,例如你希望某个流媒体服务走指定代理
- DOMAIN,netflix.com,📺 流媒体 # 使用上面的流媒体策略组
- DOMAIN-SUFFIX,hbo.com,📺 流媒体
- DOMAIN-SUFFIX,disneyplus.com,📺 流媒体
# 广告屏蔽规则(通常放在比较靠前的位置)
- RULE-SET,Ads,🛑 广告拦截 # 引用 rule-providers 中定义的 Ads 规则集
# 国内媒体直连 (通常放在广告规则之后)
- RULE-SET,DomesticMedia,🇨🇳 中国媒体
# 其他常见直连规则
- RULE-SET,DirectDomain,直连 # 引用 rule-providers 中定义的 DirectDomain 规则集
# 苹果服务走代理
- RULE-SET,Apple,🚀 节点选择 # 引用节点选择组
# 游戏走代理(如果需要)
- RULE-SET,Game,🚀 节点选择
# IP 规则:CIDR 类型规则通常放在域名规则之后
- IPLAN,0.0.0.0/8,直连 # 本地网络直连
- IPLAN,10.0.0.0/8,直连
- IPLAN,100.64.0.0/10,直连
- IPLAN,127.0.0.0/8,直连
- IPLAN,172.16.0.0/12,直连
- IPLAN,192.168.0.0/16,直连
- DST-PORT,22,直连 # SSH 端口直连
# 代理规则:通常是默认行为
# 所有未匹配的流量,都走代理
- MATCH,🚀 节点选择 # MATCH 必须放在所有自定义规则的最后,作为包罗万象的默认规则
规则类型 (常见):
DOMAIN
: 精确匹配域名。DOMAIN-SUFFIX
: 匹配域名后缀。DOMAIN-KEYWORD
: 匹配域名中的关键词。IP-CIDR
: 匹配 IP 地址段(适用于IPv4)。IP-CIDR6
: 匹配 IP 地址段(适用于IPv6)。GEOIP
: 根据 IP 归属地匹配(如GEOIP,CN,直连
)。PROCESS-NAME
: 根据进程名匹配(目前 Clash Core 不支持路由器环境下的进程名匹配)。RULE-SET
: 引用rule-providers
中定义的规则集。MATCH
: 匹配所有未被前面规则匹配的流量,作为最终规则,必须放在所有自定义规则的最后。
步骤 4:导入和应用自定义配置
复制粘贴: 将你修改好的完整 YAML 配置内容,粘贴到 OpenClash 界面的 "配置文件管理" -> "配置编辑" 页面。
保存并应用: 点击页面下方的 "保存配置" 按钮。如果配置无误,OpenClash 会自动更新并加载新配置。
检查: 返回 OpenClash 的 "运行状态" 页面,检查状态是否正常。到 "代理" 页面检查你的代理组和节点是否正确显示和工作。
第四部分:我在用的流量规则模板
以下是我的流量规则,使用后用Zashboard面板查看,效果如下:
代理组/节点组/策略组的逻辑图示:
需要具体分组的应用可以自定义进行删减调整。以下是我的模板对应的yaml内容:
# 必读!!!
# 注意规则在满足自己需求情况下,尽量做到精简,不要过度复杂,以免影响性能。
# 跑裸核用户请自行去掉下方控制面板模块的注释。
# 机场订阅(可以一直往下复制粘贴添加,注意格式对齐)
proxy-providers:
airport1:
url: "机场订阅链接放这里"
type: http
interval: 86400
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
proxy: 直连 # 机场订阅链接一般直连就可以连通,如果需要代理才能连接,则先开启代理,等此配置应用好、节点拉取好以后,再关闭代理即可。
airport2:
url: "机场订阅链接放这里"
type: http
interval: 86400
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
proxy: 直连
airport3:
url: "机场订阅链接放这里"
type: http
interval: 86400
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
proxy: 直连
# Airport2:
# url: "机场订阅填到这里,两端引号不要去掉,不要填写到下方链接里去!!"
# type: http
# interval: 86400
# health-check:
# enable: true
# url: https://www.gstatic.com/generate_204
# interval: 300
# proxy: 直连
# 节点信息
proxies:
- {name: 直连, type: direct}
# 全局配置
port: 7890
socks-port: 7891
redir-port: 7892
mixed-port: 7893
tproxy-port: 7894
allow-lan: true
bind-address: "*"
ipv6: false
unified-delay: true
tcp-concurrent: true
# interface-name: enp6s18
log-level: warning
find-process-mode: 'off'
global-client-fingerprint: chrome
keep-alive-idle: 600
keep-alive-interval: 15
profile:
store-selected: true
store-fake-ip: true
# 嗅探
sniffer:
enable: true
sniff:
HTTP:
ports: [80, 8080-8880]
override-destination: true
TLS:
ports: [443, 8443]
QUIC:
ports: [443, 8443]
force-domain:
- "+.v2ex.com"
skip-domain:
- "+.baidu.com"
# 入站
tun:
enable: true
# system/gvisor/mixed
stack: mixed
dns-hijack: ["any:53", "tcp://any:53"]
auto-route: true
auto-redirect: true
auto-detect-interface: true
# DNS模块
dns:
enable: true
listen: 0.0.0.0:1053
ipv6: false
respect-rules: true
enhanced-mode: fake-ip
fake-ip-range: 28.0.0.1/8
fake-ip-filter-mode: blacklist
fake-ip-filter:
- "rule-set:private_domain,cn_domain"
- "+.msftconnecttest.com"
- "+.msftncsi.com"
- "time.*.com"
- "+.market.xiaomi.com"
default-nameserver:
- 223.5.5.5
proxy-server-nameserver:
- https://223.5.5.5/dns-query
# namesever尽量用运营商提供的DNS(拨号的路由器概览一般能看得到运营商DNS),下面的nameserver参数记得修改
nameserver:
- 223.5.5.5
- 119.29.29.29
# 出站策略,根据自己情况调整每个策略里分组排序,增删都可以,比如把美国自动放到第一个,比如删除香港故转,注意别漏掉表情逗号等。
# 如果相应分组没有筛选到对应的国家,请根据自己节点名字调整筛选关键字。
# 没有使用锚点,是考虑修改难度,这样修改某个分组可以上下对照。更容易些。
# type的几种类型:
# 1.url-test:代理组会定期测试其包含的所有代理服务器的连通性和延迟,并总是选择当前延迟最低(性能最好)的代理来使用。当选定的代理出现问题时,它也会自动切换到下一个可用且性能较好的代理。
# 2.select:手动选择
# 3.fallback:按顺序尝试直至成功,多用于故障转移
# 4.load-balance:负载均衡
# 5.ssid:根据WiFi SSID切换
# include-all:true搭配filter规则使用,符合filter规则的节点会出现在这个代理组中
#tolerance:容忍度,单位是毫秒,仅对url-test和fallback类型有效。例如:tolerance:20,如果最佳代理是100ms,那么120ms的代理也在可接受范围内,url-test可能不会立即切换,还保留在120ms的节点选择。
#interval:测试间隔,单位是秒,仅对url-test和fallback类型有效。例如:interval:300,每隔300秒(即5分钟)检测一次所有代理延迟,并根据测试结果重新选择最佳代理。
#filter:正则表达式。例如:filter: "(?=.*(美|US|(?i)States|America))^((?!(港|台|日|韩|新)).)*$",意思是:【选取所有名称中包含“美”、“US”、“States”(不区分大小写)或“America”的节点,同时排除那些名称中也包含“港”、“台”、“日”、“韩”、“新”的节点】
proxy-groups:
- {name: 🚀 默认代理, type: select, proxies: [直连, 👆 手动选择节点, 🚊 IEPL专线, ♻️ 香港-自动, ♻️ 日本-自动, ♻️ 台湾-自动, ♻️ 新加坡-自动, ♻️ 韩国-自动, ♻️ 美国-自动, ♻️ 俄罗斯-自动, ♻️ 台日新韩澳-自动, ♻️ 港台日新韩澳-自动, ♻️ 东南亚-自动, ♻️ 澳洲-自动, ♻️ 欧洲-自动, ♻️ 中东-自动, ♻️ 拉丁美洲-自动, 🌐 所有-自动]}
- {name: 🕹️ Steam, type: select, proxies: [直连, 👆 手动选择节点, 🚊 IEPL专线, ♻️ 香港-自动, ♻️ 日本-自动, ♻️ 台湾-自动, ♻️ 新加坡-自动, ♻️ 韩国-自动, ♻️ 美国-自动, ♻️ 俄罗斯-自动, ♻️ 台日新韩澳-自动, ♻️ 港台日新韩澳-自动, ♻️ 东南亚-自动, ♻️ 澳洲-自动, ♻️ 欧洲-自动, ♻️ 中东-自动, ♻️ 拉丁美洲-自动, 🌐 所有-自动]}
- {name: 📹 YouTube, type: select, proxies: [直连, 👆 手动选择节点, 🚊 IEPL专线, ♻️ 香港-自动, ♻️ 日本-自动, ♻️ 台湾-自动, ♻️ 新加坡-自动, ♻️ 韩国-自动, ♻️ 美国-自动, ♻️ 俄罗斯-自动, ♻️ 台日新韩澳-自动, ♻️ 港台日新韩澳-自动, ♻️ 东南亚-自动, ♻️ 澳洲-自动, ♻️ 欧洲-自动, ♻️ 中东-自动, ♻️ 拉丁美洲-自动, 🌐 所有-自动]}
- {name: 🍀 Google, type: select, proxies: [直连, 👆 手动选择节点, 🚊 IEPL专线, ♻️ 香港-自动, ♻️ 日本-自动, ♻️ 台湾-自动, ♻️ 新加坡-自动, ♻️ 韩国-自动, ♻️ 美国-自动, ♻️ 俄罗斯-自动, ♻️ 台日新韩澳-自动, ♻️ 港台日新韩澳-自动, ♻️ 东南亚-自动, ♻️ 澳洲-自动, ♻️ 欧洲-自动, ♻️ 中东-自动, ♻️ 拉丁美洲-自动, 🌐 所有-自动]}
- {name: 🤖 AI, type: select, proxies: [直连, 👆 手动选择节点, 🚊 IEPL专线, ♻️ 香港-自动, ♻️ 日本-自动, ♻️ 台湾-自动, ♻️ 新加坡-自动, ♻️ 韩国-自动, ♻️ 美国-自动, ♻️ 俄罗斯-自动, ♻️ 台日新韩澳-自动, ♻️ 港台日新韩澳-自动, ♻️ 东南亚-自动, ♻️ 澳洲-自动, ♻️ 欧洲-自动, ♻️ 中东-自动, ♻️ 拉丁美洲-自动, 🌐 所有-自动]}
- {name: 👨🏿💻 GitHub, type: select, proxies: [直连, 👆 手动选择节点, 🚊 IEPL专线, ♻️ 香港-自动, ♻️ 日本-自动, ♻️ 台湾-自动, ♻️ 新加坡-自动, ♻️ 韩国-自动, ♻️ 美国-自动, ♻️ 俄罗斯-自动, ♻️ 台日新韩澳-自动, ♻️ 港台日新韩澳-自动, ♻️ 东南亚-自动, ♻️ 澳洲-自动, ♻️ 欧洲-自动, ♻️ 中东-自动, ♻️ 拉丁美洲-自动, 🌐 所有-自动]}
- {name: 🐬 OneDrive, type: select, proxies: [直连, 👆 手动选择节点, 🚊 IEPL专线, ♻️ 香港-自动, ♻️ 日本-自动, ♻️ 台湾-自动, ♻️ 新加坡-自动, ♻️ 韩国-自动, ♻️ 美国-自动, ♻️ 俄罗斯-自动, ♻️ 台日新韩澳-自动, ♻️ 港台日新韩澳-自动, ♻️ 东南亚-自动, ♻️ 澳洲-自动, ♻️ 欧洲-自动, ♻️ 中东-自动, ♻️ 拉丁美洲-自动, 🌐 所有-自动]}
- {name: 🪟 Microsoft, type: select, proxies: [直连, 👆 手动选择节点, 🚊 IEPL专线, ♻️ 香港-自动, ♻️ 日本-自动, ♻️ 台湾-自动, ♻️ 新加坡-自动, ♻️ 韩国-自动, ♻️ 美国-自动, ♻️ 俄罗斯-自动, ♻️ 台日新韩澳-自动, ♻️ 港台日新韩澳-自动, ♻️ 东南亚-自动, ♻️ 澳洲-自动, ♻️ 欧洲-自动, ♻️ 中东-自动, ♻️ 拉丁美洲-自动, 🌐 所有-自动]}
- {name: 🎵 TikTok, type: select, proxies: [直连, 👆 手动选择节点, 🚊 IEPL专线, ♻️ 香港-自动, ♻️ 日本-自动, ♻️ 台湾-自动, ♻️ 新加坡-自动, ♻️ 韩国-自动, ♻️ 美国-自动, ♻️ 俄罗斯-自动, ♻️ 台日新韩澳-自动, ♻️ 港台日新韩澳-自动, ♻️ 东南亚-自动, ♻️ 澳洲-自动, ♻️ 欧洲-自动, ♻️ 中东-自动, ♻️ 拉丁美洲-自动, 🌐 所有-自动]}
- {name: 📲 Telegram, type: select, proxies: [直连, 👆 手动选择节点, 🚊 IEPL专线, ♻️ 香港-自动, ♻️ 日本-自动, ♻️ 台湾-自动, ♻️ 新加坡-自动, ♻️ 韩国-自动, ♻️ 美国-自动, ♻️ 俄罗斯-自动, ♻️ 台日新韩澳-自动, ♻️ 港台日新韩澳-自动, ♻️ 东南亚-自动, ♻️ 澳洲-自动, ♻️ 欧洲-自动, ♻️ 中东-自动, ♻️ 拉丁美洲-自动, 🌐 所有-自动]}
- {name: 🎥 NETFLIX, type: select, proxies: [直连, 👆 手动选择节点, 🚊 IEPL专线, ♻️ 香港-自动, ♻️ 日本-自动, ♻️ 台湾-自动, ♻️ 新加坡-自动, ♻️ 韩国-自动, ♻️ 美国-自动, ♻️ 俄罗斯-自动, ♻️ 台日新韩澳-自动, ♻️ 港台日新韩澳-自动, ♻️ 东南亚-自动, ♻️ 澳洲-自动, ♻️ 欧洲-自动, ♻️ 中东-自动, ♻️ 拉丁美洲-自动, 🌐 所有-自动]}
- {name: 💶 PayPal, type: select, proxies: [直连, 👆 手动选择节点, 🚊 IEPL专线, ♻️ 香港-自动, ♻️ 日本-自动, ♻️ 台湾-自动, ♻️ 新加坡-自动, ♻️ 韩国-自动, ♻️ 美国-自动, ♻️ 俄罗斯-自动, ♻️ 台日新韩澳-自动, ♻️ 港台日新韩澳-自动, ♻️ 东南亚-自动, ♻️ 澳洲-自动, ♻️ 欧洲-自动, ♻️ 中东-自动, ♻️ 拉丁美洲-自动, 🌐 所有-自动]}
- {name: 🐟 漏网之鱼, type: select, proxies: [直连, 👆 手动选择节点, 🚊 IEPL专线, ♻️ 香港-自动, ♻️ 日本-自动, ♻️ 台湾-自动, ♻️ 新加坡-自动, ♻️ 韩国-自动, ♻️ 美国-自动, ♻️ 俄罗斯-自动, ♻️ 台日新韩澳-自动, ♻️ 港台日新韩澳-自动, ♻️ 东南亚-自动, ♻️ 澳洲-自动, ♻️ 欧洲-自动, ♻️ 中东-自动, ♻️ 拉丁美洲-自动, 🌐 所有-自动]}
# 按如下配置,【🚊 IEPL专线】代理组、【👆 手动选择节点】代理组需要手动选择,其他都是自动选择。
# 请合理评估机场节点数量,以及interval的间隔。
- {name: 👆 手动选择节点, type: select, include-all: true}
- {name: 🚊 IEPL专线, type: select, include-all: true, filter: "(?i)IEPL|专线"}
- {name: ♻️ 香港-自动, type: url-test, include-all: true, tolerance: 20, interval: 60, filter: "^(?=.*(港|香港|(?i)HK|Hongkong)).*$"}
- {name: ♻️ 日本-自动, type: url-test, include-all: true, tolerance: 20, interval: 60, filter: "^(?=.*(日|(?i)JP|Japan)).*$"}
- {name: ♻️ 台湾-自动, type: url-test, include-all: true, tolerance: 20, interval: 60, filter: "^(?=.*(台|湾|灣|(?i)TW|Taiwan)).*$"}
- {name: ♻️ 新加坡-自动, type: url-test, include-all: true, tolerance: 20, interval: 60, filter: "^(?=.*(新加坡|坡|狮城|SG|Singapore)).*$"}
- {name: ♻️ 韩国-自动, type: url-test, include-all: true, tolerance: 20, interval: 60, filter: "^(?=.*(韩|韩国|韓國|首尔|汉城|(?i)KR|Korea)).*$"}
- {name: ♻️ 美国-自动, type: url-test, include-all: true, tolerance: 20, interval: 60, filter: "^(?=.*(美|纽约|波特兰|达拉斯|俄勒|凤凰城|费利蒙|硅谷|拉斯|洛杉|圣何塞|圣克拉|西雅|芝加|(?i)US|States|America)).*$"}
- {name: ♻️ 俄罗斯-自动, type: url-test, include-all: true, tolerance: 20, interval: 300, filter: "^(?=.*(俄|俄罗斯|(?i)RU|Russia)).*$"}
- {name: ♻️ 台日新韩澳-自动, type: url-test, include-all: true, tolerance: 20, interval: 60, filter: "^(?=.*(澳门|韩|韩国|韓國|首尔|汉城|坡|狮城|日|台|湾|灣|(?i)KR|Korea|SG|Singapore|JP|Japan|TW|Taiwan|Macau)).*$"}
- {name: ♻️ 港台日新韩澳-自动, type: url-test, include-all: true, tolerance: 20, interval: 60, filter: "^(?=.*(澳门|韩|韩国|韓國|首尔|汉城|坡|狮城|日|台|湾|灣|港|香港|(?i)KR|Korea|SG|Singapore|JP|Japan|TW|Taiwan|HK|Hongkong|Macau)).*$"}
- {name: ♻️ 东南亚-自动, type: url-test, include-all: true, tolerance: 20, interval: 100, filter: "^(?=.*(越|越南|柬|柬埔寨|马来西亚|泰|泰国|印度尼西亚|印尼|老挝|菲|菲律宾|(?i)VN|Vietnam|KH|Cambodia|MY|Malaysia|TH|Thailand|Indonesia|Laos|Philippines)).*$"}
- {name: ♻️ 澳洲-自动, type: url-test, include-all: true, tolerance: 20, interval: 300, filter: "^(?=.*(澳洲|澳大利亚|新西兰|悉尼|墨尔本|(?i)AU|Australia|NewZealand|Sydney|Melbourne)).*$"}
- {name: ♻️ 欧洲-自动, type: url-test, include-all: true, tolerance: 20, interval: 300, filter: "^(?=.*(德国|英国|希腊|芬兰|意大利|比利时|法国|荷兰|冰岛|瑞士|瑞典|西班牙|爱尔兰|挪威|立陶宛|波兰|(?i)GR|UK|FR|Germany|Greece|Finland|Italy|Belgium|France|Netherlands|Iceland|Switzerland|Sweden|Spain|Ireland|Norway|Poland)).*$"}
- {name: ♻️ 中东-自动, type: url-test, include-all: true, tolerance: 20, interval: 300, filter: "^(?=.*(阿拉伯|迪拜|沙特|利雅得|吉达|卡塔尔|以色列|土耳其|埃及|约旦|开罗|巴林|利比亚|也门|(?i)Arab|Dubai|Saudi|Arabia|Riyadh|Jeddah|Qatar|Israel|Turkey|Egypt|Jordan|Cairo|Bahrain|Libya|Yemen)).*$"}
- {name: ♻️ 拉丁美洲-自动, type: url-test, include-all: true, tolerance: 20, interval: 300, filter: "^(?=.*(巴西|阿根廷|墨西哥|秘鲁|玻利维亚|智利|哥伦比亚|厄瓜多尔|巴拉圭|乌拉圭|委内瑞拉|(?i)Brazil|Argentina|Mexico|Peru|Bolivia|Chile|Colombia|Ecuador|Paraguay|Venezuela|Uruguay)).*$"}
- {name: 🌐 所有-自动, type: url-test, include-all: true, tolerance: 20, interval: 300, filter: "^(?!.*(?i:DIRECT|REJECT|直连|拒绝)).*$"}
# 规则匹配
# 此规则部分没有做防泄露处理,因为弊严重大于利!
rules:
- RULE-SET,private_ip,直连
- RULE-SET,private_domain,直连
- RULE-SET,steamcn_domain,直连
- RULE-SET,steam_domain,🕹️ Steam
- DOMAIN-SUFFIX,qichiyu.com,🚀 默认代理
- RULE-SET,proxylite,🚀 默认代理
- RULE-SET,ai,🤖 AI
- RULE-SET,github_domain,👨🏿💻 GitHub
- RULE-SET,youtube_domain,📹 YouTube
- RULE-SET,google_domain,🍀 Google
- RULE-SET,onedrive_domain,🐬 OneDrive
- RULE-SET,microsoft_domain,🪟 Microsoft
- RULE-SET,apple_domain,直连
- RULE-SET,tiktok_domain,🎵 TikTok
- RULE-SET,telegram_domain,📲 Telegram
- RULE-SET,netflix_domain,🎥 NETFLIX
- RULE-SET,paypal_domain,💶 PayPal
- RULE-SET,apple_ip,直连,no-resolve
- RULE-SET,google_ip,🍀 Google,no-resolve
- RULE-SET,netflix_ip,🎥 NETFLIX,no-resolve
- RULE-SET,telegram_ip,📲 Telegram,no-resolve
- RULE-SET,geolocation-!cn,🚀 默认代理
- RULE-SET,cn_domain,直连
- RULE-SET,cn_ip,直连
- MATCH,🐟 漏网之鱼
# 规则集
## type:可选http/file/inline behavior:可选domain/ipcidr/classical format:可选yaml/text/mrs
rule-anchor:
ip: &ip {type: http, interval: 86400, behavior: ipcidr, format: mrs}
domain: &domain {type: http, interval: 86400, behavior: domain, format: mrs}
class: &class {type: http, interval: 86400, behavior: classical, format: text}
rule-providers:
# domain部分:
private_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/private.mrs"}
steam_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/steam.mrs"}
steamcn_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/steam@cn.mrs"}
proxylite: { <<: *class, url: "https://raw.githubusercontent.com/qichiyuhub/rule/refs/heads/main/proxy.list"}
ai: { <<: *domain, url: "https://github.com/MetaCubeX/meta-rules-dat/raw/refs/heads/meta/geo/geosite/category-ai-!cn.mrs" }
youtube_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/youtube.mrs"}
google_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/google.mrs"}
github_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/github.mrs"}
telegram_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/telegram.mrs"}
netflix_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/netflix.mrs"}
paypal_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/paypal.mrs"}
onedrive_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/onedrive.mrs"}
microsoft_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/microsoft.mrs"}
apple_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/apple-cn.mrs"}
speedtest_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/ookla-speedtest.mrs"}
tiktok_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/tiktok.mrs"}
geolocation-!cn: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/geolocation-!cn.mrs"}
cn_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/cn.mrs"}
#ip部分:
private_ip: {<<: *ip, url: "https://github.com/MetaCubeX/meta-rules-dat/raw/refs/heads/meta/geo/geoip/private.mrs"}
cn_ip: { <<: *ip, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/cn.mrs"}
google_ip: { <<: *ip, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/google.mrs"}
telegram_ip: { <<: *ip, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/telegram.mrs"}
netflix_ip: { <<: *ip, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/netflix.mrs"}
apple_ip: {<<: *ip, url: "https://github.com/MetaCubeX/meta-rules-dat/raw/refs/heads/meta/geo-lite/geoip/apple.mrs"}
其中代理组proxy-groups的部分可以自行调整、增加、删减。
如需增加新的服务规则,但是想找此服务的domain或者域名,然后配置好,可以按照如下操作:
1.打开大佬整理的域名和ip库,地址点我,当然你也可以fork到自己的github仓库
2.如果asn、geo-lite、geo这三个库,哪个都行。我选择的是geo库
3.如果靠domain域名匹配,就在geosite
文件夹下搜索,如果靠ip匹配,就在geoip
文件夹下搜索(注意后缀mrs/list/yaml三种类型都可以,只是每条rule-providers
的内容参数要修改)。按照我的模板调整最小化去改,就用.mrs
文件
4.然后复制一行,修改文件名就行
5.然后在proxy-groups
中,增加一个Bilibili的服务代理组就可以了。
注意事项:
1.这3个部分要对应(proxy-groups
,rules
,rule-providers
),要调整,下面3个要同步调整(注意名字要一样,包括emoji)。
proxy-groups
rules
rule-providers
2.大部分简单应用和服务,通过域名domain进行匹配就行,相对复杂的例如苹果、google等复杂的服务,也可以通过ip。
3.后缀是.mrs
是二进制文件,无法直接打开看到内容,链接可以点击打开看是否能下载,如果可以下载,则链接有效。
操作的最后,调整好了自己的.yaml
文件,然后就直接在PC-clash客户端或者路由器Openclash上,找到配置导入,把.yaml
导入,然后更新订阅刷新即可生效。
第五部分:注意事项与进阶建议
语法检查: 每次修改 YAML 文件后,务必使用在线 YAML 校验工具或 VS Code 插件进行语法检查。YAML 对缩进和格式非常敏感,一个小错误都可能导致配置无法加载。
逐步测试: 不要一次性修改太多内容。每次只添加或修改一小部分规则,然后保存并应用,观察OpenClash的运行状态和实际效果,确保没有引入新的问题。
备份: 在进行重大修改前,务必备份你当前的 OpenClash 配置。
性能考量: 规则过多或过于复杂可能会影响路由器性能。合理管理规则集,删除不必要的规则。
规则顺序:
rules
部分的规则顺序至关重要。更具体、更精确的规则应该放在前面,通用规则放在后面。MATCH
规则永远放在最后。善用注释: 在规则中添加注释,解释规则的目的和作用,方便日后维护和理解。
理解日志: 当配置不生效或出现问题时,查看 OpenClash 的日志(在 OpenClash 界面中通常有日志页面)可以帮助你定位问题。
总结
通过本教程,你应该对 OpenClash 的 YAML 自定义规则管理有了更深入的理解。虽然初学时可能略显复杂,但一旦掌握,它将极大地增强对网络流量的控制力,打造一个更高效、更安全、更符合您个性化需求的网络环境。
- 感谢你赐予我前进的力量