代理分流入门指南
从零理解代理分流的核心概念,涵盖 Surge、Clash、Shadowrocket、Quantumult X 四大平台的规则语法与推荐配置。
一、什么是分流
分流(Split Tunneling)是代理工具最核心的功能:决定每一条网络请求走哪条路。
没有分流的代理是全局代理——所有流量都经过代理服务器。这会导致:
- 访问国内网站反而变慢(绕了一圈国外再回来)
- 浪费代理流量(看 B 站、刷淘宝都在消耗代理带宽)
- 部分国内服务异常(银行 App 检测到海外 IP 可能拒绝登录)
分流的本质就是一套 if-else 规则:
如果 访问 google.com → 走代理
如果 访问 baidu.com → 直连
如果 访问 netflix.com → 走美国节点
如果 IP 属于中国 → 直连
其他所有请求 → 走代理
代理工具按照规则从上到下逐条匹配,第一条命中的规则生效,后面的不再检查。这个"先到先得"的顺序决定了规则的优先级。
二、策略组——规则的出口
在写规则之前,先理解"策略组"(Policy Group)。策略组定义了流量的出口,规则负责把流量分配到对应的策略组。
常见的策略组类型:
| 策略组类型 | 含义 | 适用场景 |
|---|---|---|
select |
手动选择节点 | 主策略,需要时手动切换 |
url-test |
自动选延迟最低的节点 | 地区节点组(香港、美国等) |
fallback |
自动切换到可用节点 | 备用方案,节点挂了自动切 |
DIRECT |
直连,不走代理 | 国内流量 |
REJECT |
拒绝连接 | 广告拦截 |
一个典型的策略组设计:
Proxy(主策略)→ 手动选择地区
├── 🇭🇰 香港 → 自动选最快香港节点
├── 🇺🇸 美国 → 自动选最快美国节点
├── 🇯🇵 日本 → 自动选最快日本节点
└── 🇸🇬 新加坡 → 自动选最快新加坡节点
AI → 手动选择(通常选美国)
流媒体 → 手动选择(按需切换地区)
三、规则类型——分流的基本语法
所有代理工具都支持以下核心规则类型,只是写法略有差异:
| 规则类型 | 匹配方式 | 示例 | 说明 |
|---|---|---|---|
DOMAIN |
精确域名 | google.com |
只匹配 google.com,不匹配 www.google.com |
DOMAIN-SUFFIX |
域名后缀 | .google.com |
匹配 google.com 及所有子域名,最常用 |
DOMAIN-KEYWORD |
域名关键词 | google |
域名中包含 google 就命中 |
IP-CIDR |
IP 地址段 | 10.0.0.0/8 |
匹配指定 IP 范围 |
GEOIP |
IP 地理位置 | CN |
基于 GeoIP 数据库判断 IP 所属国家 |
PROCESS-NAME |
进程名 | Telegram |
按应用程序匹配(仅桌面端) |
RULE-SET |
外部规则集 | 引用远程 .list 文件 |
批量加载规则,不用一条条手写 |
FINAL / MATCH |
兜底 | — | 所有规则都没命中时的默认行为 |
Quantumult X 的特殊之处:它用HOST代替DOMAIN,HOST-SUFFIX代替DOMAIN-SUFFIX,HOST-KEYWORD代替DOMAIN-KEYWORD。含义完全一样,只是关键词不同。
四、分流策略设计——什么走哪里
对大多数人来说,以下分层策略足够覆盖日常需求:
第一层:广告拦截(REJECT)
把已知的广告和追踪域名直接拒绝,这是优先级最高的规则。
第二层:国内直连(DIRECT)
国内网站和服务不需要走代理,直连速度更快、体验更好:
- Apple/Microsoft 国内 CDN
- 国内主流 App(微信、支付宝、淘宝、B 站等)
- 银行和支付类服务
- 内网和局域网地址
第三层:服务分流(指定策略组)
需要特定出口的服务单独分流:
| 服务类型 | 推荐出口 | 原因 |
|---|---|---|
| AI(ChatGPT、Claude) | 美国节点 | 部分 AI 服务限制非美国 IP |
| 流媒体(Netflix、Disney+) | 对应地区节点 | 解锁地区限制内容 |
| Telegram | 任意代理节点 | 国内无法直连 |
| GitHub | 代理节点 | 加速访问和下载 |
| Google 全家桶 | 代理节点 | 国内无法直连 |
第四层:兜底规则
所有没命中前面规则的流量,通常有两种策略:
- 代理优先(推荐):
FINAL → Proxy。未知流量走代理,确保被墙的新域名不漏。 - 直连优先:
FINAL → DIRECT。未知流量直连,省代理流量,但可能有漏网之鱼。
完整的匹配顺序
请求进入代理工具
↓
① 广告拦截 → 命中则 REJECT(拦截)
↓
② 国内直连 → 命中则 DIRECT(直连)
↓
③ 服务分流 → 命中则走指定策略组(AI / 流媒体 / Telegram 等)
↓
④ 海外域名 → 命中则走 Proxy(代理)
↓
⑤ GEOIP,CN → 中国 IP 直连(兜底保护国内流量)
↓
⑥ FINAL/MATCH → 其余全部走代理
五、各平台配置示例
以下是同一套分流逻辑在四个平台的写法。为了便于对比,示例均使用 blackmatrix7/ios_rule_script 作为规则源——它同时提供 Surge、Clash、Shadowrocket、Quantumult X 四种格式。
Surge
Surge 使用 INI 风格配置,规则在 [Rule] 段中逐行编写。
[Proxy Group]
Proxy = select, 🇭🇰 HK, 🇺🇸 US, 🇯🇵 JP, 🇸🇬 SG
AI = select, 🇺🇸 US, Proxy
Streaming = select, Proxy, 🇭🇰 HK, 🇺🇸 US, 🇯🇵 JP, 🇸🇬 SG
# 地区节点组(自动选最快)
🇭🇰 HK = url-test, policy-regex-filter=港|HK|Hong, interval=600, tolerance=50
🇺🇸 US = url-test, policy-regex-filter=美|US|States, interval=600, tolerance=50
🇯🇵 JP = url-test, policy-regex-filter=日|JP|Japan, interval=600, tolerance=50
🇸🇬 SG = url-test, policy-regex-filter=新|SG|Singapore, interval=600, tolerance=50
[Rule]
# 广告拦截
DOMAIN-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/AdvertisingLite/AdvertisingLite_Domain.list,REJECT
# 国内直连
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/ChinaASN/ChinaASN.list,DIRECT
# AI 服务
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/OpenAI/OpenAI.list,AI
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/Claude/Claude.list,AI
# 流媒体
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/YouTube/YouTube.list,Streaming
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/Netflix/Netflix.list,Streaming
# 常用海外服务
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/Telegram/Telegram.list,Proxy
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/GitHub/GitHub.list,Proxy
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/Google/Google.list,Proxy
# 兜底
GEOIP,CN,DIRECT
FINAL,Proxy,dns-failed
Surge 特有功能:支持 extended-matching(扩展匹配)和 pre-matching(前置匹配),详见 Surge 自定义配置教程。
Clash Meta (mihomo)
Clash Meta(现名 mihomo)使用 YAML 格式配置。它是目前 PC 端最主流的代理内核,GUI 客户端包括 Clash Verge Rev、Clash Nyanpasu、FlClash 等。
proxy-groups:
- name: Proxy
type: select
proxies: [🇭🇰 HK, 🇺🇸 US, 🇯🇵 JP, 🇸🇬 SG]
- name: AI
type: select
proxies: [🇺🇸 US, Proxy]
- name: Streaming
type: select
proxies: [Proxy, 🇭🇰 HK, 🇺🇸 US, 🇯🇵 JP, 🇸🇬 SG]
# 地区节点组(自动选最快)
- name: 🇭🇰 HK
type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50
filter: "港|HK|Hong"
- name: 🇺🇸 US
type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50
filter: "美|US|States"
# 规则提供者(自动更新远程规则集)
rule-providers:
ad-block:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/AdvertisingLite/AdvertisingLite_Domain.yaml"
path: ./rules/ad-block.yaml
interval: 86400
china:
type: http
behavior: classical
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaASN/ChinaASN.yaml"
path: ./rules/china.yaml
interval: 86400
openai:
type: http
behavior: classical
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/OpenAI/OpenAI.yaml"
path: ./rules/openai.yaml
interval: 86400
youtube:
type: http
behavior: classical
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/YouTube/YouTube.yaml"
path: ./rules/youtube.yaml
interval: 86400
telegram:
type: http
behavior: classical
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Telegram/Telegram.yaml"
path: ./rules/telegram.yaml
interval: 86400
google:
type: http
behavior: classical
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Google/Google.yaml"
path: ./rules/google.yaml
interval: 86400
rules:
# 广告拦截
- RULE-SET,ad-block,REJECT
# 国内直连
- RULE-SET,china,DIRECT
# AI 服务
- RULE-SET,openai,AI
# 流媒体
- RULE-SET,youtube,Streaming
# 常用海外服务
- RULE-SET,telegram,Proxy
- RULE-SET,google,Proxy
# 兜底
- GEOIP,CN,DIRECT
- MATCH,Proxy
Clash Meta 特有功能:支持 GEOSITE 规则类型(如 GEOSITE,youtube,Proxy),基于 geosite.dat 数据库进行高效域名匹配,性能优于逐条 DOMAIN-SUFFIX。
注意:Clash Meta 的兜底规则是MATCH,不是FINAL。
Shadowrocket(小火箭)
Shadowrocket 的规则语法与 Surge 高度兼容,可以直接使用大部分 Surge 格式的规则集。
[Proxy Group]
Proxy = select, 🇭🇰 HK, 🇺🇸 US, 🇯🇵 JP, 🇸🇬 SG
AI = select, 🇺🇸 US, Proxy
Streaming = select, Proxy, 🇭🇰 HK, 🇺🇸 US, 🇯🇵 JP, 🇸🇬 SG
🇭🇰 HK = url-test, url=http://www.gstatic.com/generate_204, interval=600, tolerance=50, policy-regex-filter=港|HK|Hong
🇺🇸 US = url-test, url=http://www.gstatic.com/generate_204, interval=600, tolerance=50, policy-regex-filter=美|US|States
[Rule]
# 广告拦截
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Shadowrocket/AdvertisingLite/AdvertisingLite.list,REJECT
# 国内直连
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Shadowrocket/ChinaASN/ChinaASN.list,DIRECT
# AI 服务
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Shadowrocket/OpenAI/OpenAI.list,AI
# 流媒体
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Shadowrocket/YouTube/YouTube.list,Streaming
# 常用海外服务
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Shadowrocket/Telegram/Telegram.list,Proxy
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Shadowrocket/Google/Google.list,Proxy
# 兜底
GEOIP,CN,DIRECT
FINAL,Proxy
Shadowrocket 优势:iOS 上性价比最高的代理工具(一次性购买),规则兼容 Surge 格式,上手门槛低。
Quantumult X
Quantumult X 的配置风格较为独特,规则分为 [filter_remote](远程规则集)和 [filter_local](本地规则)两个段,且关键词与其他平台不同。
[policy]
static=Proxy, 🇭🇰 HK, 🇺🇸 US, 🇯🇵 JP, 🇸🇬 SG, img-url=https://example.com/icon.png
static=AI, 🇺🇸 US, Proxy, img-url=https://example.com/icon.png
static=Streaming, Proxy, 🇭🇰 HK, 🇺🇸 US, 🇯🇵 JP, 🇸🇬 SG, img-url=https://example.com/icon.png
available=🇭🇰 HK, server-tag-regex=港|HK|Hong, img-url=https://example.com/icon.png
available=🇺🇸 US, server-tag-regex=美|US|States, img-url=https://example.com/icon.png
[filter_remote]
# 广告拦截
https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/QuantumultX/AdvertisingLite/AdvertisingLite.list, tag=广告拦截, force-policy=reject, update-interval=86400, enabled=true
# 国内直连
https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/QuantumultX/ChinaASN/ChinaASN.list, tag=国内直连, force-policy=direct, update-interval=86400, enabled=true
# AI 服务
https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/QuantumultX/OpenAI/OpenAI.list, tag=OpenAI, force-policy=AI, update-interval=86400, enabled=true
# 流媒体
https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/QuantumultX/YouTube/YouTube.list, tag=YouTube, force-policy=Streaming, update-interval=86400, enabled=true
# 常用海外服务
https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/QuantumultX/Telegram/Telegram.list, tag=Telegram, force-policy=Proxy, update-interval=86400, enabled=true
https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/QuantumultX/Google/Google.list, tag=Google, force-policy=Proxy, update-interval=86400, enabled=true
[filter_local]
# 兜底
GEOIP,CN,DIRECT
FINAL,Proxy
Quantumult X 关键词对照表:
| 其他平台 | Quantumult X | 说明 |
|---|---|---|
DOMAIN |
HOST |
精确域名 |
DOMAIN-SUFFIX |
HOST-SUFFIX |
域名后缀 |
DOMAIN-KEYWORD |
HOST-KEYWORD |
域名关键词 |
url-test |
available |
自动选最快节点 |
select |
static |
手动选择 |
注意:Quantumult X 在 [filter_remote] 中引用的远程规则集使用的是 QX 自己的格式。blackmatrix7 仓库为每个平台都提供了对应格式的规则文件。六、推荐规则源
不需要自己一条条写规则。社区维护了高质量的规则集,直接引用即可:
| 规则源 | 特点 | 适用平台 | 地址 |
|---|---|---|---|
| blackmatrix7 | 分类最全,更新频繁,同时提供四种平台格式 | 全平台 | GitHub |
| Loyalsoldier | 规则精简高效,适合追求轻量的用户 | Clash / Surge | GitHub |
| ACL4SSR | 老牌规则源,提供多种"全家桶"预配置方案 | Clash 为主 | GitHub |
| Sukka (skk.moe) | 质量最高,广告拦截分类精细,维护严谨 | Surge 为主 | Blog |
| 秋风广告规则 | 专注国内 App 广告拦截 | 全平台 | GitHub |
新手推荐:直接使用 blackmatrix7 的规则集。它为 Surge、Clash、Shadowrocket、Quantumult X 四个平台分别提供了对应格式的文件,路径结构清晰:
blackmatrix7/ios_rule_script/
└── rule/
├── Surge/ ← Surge 格式
│ ├── Google/Google.list
│ ├── YouTube/YouTube.list
│ └── ...
├── Clash/ ← Clash 格式
│ ├── Google/Google.yaml
│ └── ...
├── Shadowrocket/ ← Shadowrocket 格式
│ └── ...
└── QuantumultX/ ← Quantumult X 格式
└── ...
七、平台选择建议
| 平台 | 系统 | 价格 | 适合人群 |
|---|---|---|---|
| Clash Verge Rev | Windows / macOS / Linux | 免费开源 | PC 用户首选,功能强大,生态丰富 |
| Shadowrocket | iOS | $2.99(一次性) | iOS 性价比之王,规则兼容 Surge |
| Surge | iOS / macOS | $49.99-$99.99 | 追求极致稳定和功能的用户 |
| Quantumult X | iOS | $7.99(一次性) | iOS 用户的中间选择,UI 精致 |
| FlClash | Android / Windows / macOS / Linux | 免费开源 | 全平台通用,基于 Clash Meta 内核 |
快速上手路径
PC 用户:安装 Clash Verge Rev → 导入机场订阅 → 使用内置或在线的 blackmatrix7 规则配置
iOS 用户:购买 Shadowrocket → 导入机场订阅 → 添加远程规则集
追求深度定制:参考 Surge 自定义配置教程 搭建模块化配置
八、手动添加规则
除了引用远程规则集,日常使用中经常需要临时添加自定义规则。以下是各平台手动加规则的语法:
场景一:某个域名走代理
# Surge / Shadowrocket
DOMAIN-SUFFIX,example.com,Proxy
# Clash Meta
- DOMAIN-SUFFIX,example.com,Proxy
# Quantumult X(写在 [filter_local] 中)
HOST-SUFFIX,example.com,Proxy
场景二:某个域名直连
# Surge / Shadowrocket
DOMAIN-SUFFIX,mybank.com,DIRECT
# Clash Meta
- DOMAIN-SUFFIX,mybank.com,DIRECT
# Quantumult X
HOST-SUFFIX,mybank.com,DIRECT
场景三:某个 IP 段直连
# Surge / Shadowrocket
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
# Clash Meta
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
# Quantumult X
IP-CIDR,192.168.0.0/16,DIRECT
no-resolve 表示不对域名做 DNS 解析再匹配 IP,避免不必要的 DNS 查询。Surge、Clash、Shadowrocket 都支持这个参数。
九、常见问题
规则越多越好吗?
不是。规则越多,每个请求的匹配时间越长。实际上:
- 2000-5000 条规则在现代设备上几乎无感
- 超过 10000 条可能在低性能设备(老款手机)上有轻微延迟
- 重要的不是数量,而是规则的顺序——高频命中的规则放前面
GEOIP 和域名规则哪个优先?
域名规则应该放在 GEOIP 前面。原因:
- 域名规则不需要 DNS 解析就能匹配,速度更快
- GEOIP 需要先解析域名拿到 IP,再查数据库判断地区
- 如果
GEOIP,CN放在前面,所有被墙域名会因为 DNS 污染返回错误 IP 而直连失败
正确顺序:域名规则 → GEOIP → FINAL
代理优先还是直连优先?
推荐代理优先(FINAL → Proxy)。理由:
- 国内域名已经被前面的规则覆盖走了直连
- 没被规则覆盖的域名大概率是海外域名
- 如果直连优先,新的被墙域名会漏掉
为什么某些 App 即使配了直连规则还是异常?
可能的原因:
- 证书问题:开启了 MITM(中间人解密),但目标 App 使用了 Certificate Pinning(证书绑定),导致连接被拒绝。解决方法:在 MITM 中排除该域名
- DNS 问题:代理工具的 DNS 设置与 App 预期不一致。尝试将该域名的 DNS 指定为系统 DNS
- 规则顺序:该域名被前面的某条规则提前匹配走了代理。检查规则优先级
Clash Premium 和 Clash Meta 什么关系?
Clash 原版(Clash Premium)已于 2023 年停止维护并删库。Clash Meta(后更名为 mihomo)是社区维护的活跃分支,功能更强大,支持更多协议(Hysteria2、TUIC、VLESS 等)。目前所有主流 Clash GUI 客户端都基于 mihomo 内核,日常说的"Clash"基本都指它。