type
status
date
slug
summary
tags
category
icon
password
Property
Nov 17, 2022 01:31 AM
哪些客户端支持分流规则
从 Surge 开创了分流规则配置化之后,新一代的代理工具都纷纷实现了以配置文件为核心的分流代理。其中代表作有:

- Surge for iOS 和 Surge for Mac,拥有最强大的规则表达能力,iOS 端最稳定的 VPN 连接体验,当然订阅时长解锁制,也是所有软件中收费最贵的。
- Quantumult X 新兴崛起的 iOS 代理软件,有近乎 Surge 的规则表达能力,和不输 Surge 的稳定性。颜值在线,价格也就是 Surge 的十分之一。
- Clash 家族,沿袭了 Surge 的分流配置思想,提出了 Proxy 和 Proxy Group 概念,形成连环嵌套的代理节点选择方式。因为 Clash 开源,所以其客户端众多,而且都免费,同时支持 Clash for Windows、Clash for Android 和 ClashX(macOS)。
这三个客户端虽然分流配置格式不同,概念也不同,但是大部分规则是可以互相转化的,我的 k-surgio 项目就以 ConnerHua 维护的神机规则为蓝本,进行了扩充和优化,实现一套配置,多个客户端同步使用的效果。
分流规则是怎么工作的
首先看看,当你载入一个配置之后,节点形成的策略组(Clash 中又叫 Proxy Group):

策略组是一组下游节点的集合,策略组命中哪一个下游一般有几种情况,也就是策略:
- 手工选择
- 最小延迟
- 负载均衡
分流,其本质就是根据一定的规则,把流量导向不同的策略组、代理节点过程,一般情况下,流量的目的地可以分为:
- 「直连」(也就是不代理)
- 「拒绝」(一般用作广告拦截)
- 「代理」
传统代理模式中,「代理」节点是固定的,你选择哪个就是哪个,规则也是简单的,给出一个黑名单,上面的域名全部走「代理」节点,其他走「直连」节点。但是如果我们使用了策略组,就可以把规则定的更加详细,通过
- 「程序的名字」
- 「访问的域名、IP」
- 「源或目的地 IP、端口」
- 「域名的前缀、后缀、关键字」
等等规则,将流量引向不同的「代理」节点,或者是导向不同的「策略组」。
下图是 k-surgio 项目的分流规则示意图:

举几个例子来看一下,分流怎么工作的:
- 我访问 YouTube 的时候,被「国外流媒体」这个过滤器识别到,将流量引到了「🗽 ForeignMedia」这个策略组,这个策略组现在选择的节点是「🇺🇸 BWG-US」。
- 我访问 Google 搜索,被「国外主要网站」这个过滤器识别到,将流量引到了「🚀 Proxy」策略组,这个策略组现在选择的节点是「🇭🇰 GCP-HK」。
- 打开上面搜索结果的时候,有一个弹窗页面被「流氓页面」这个过滤器识别到,流量被引到了「🔪 Hijacking」策略组,这个策略组现在选择的节点是「Reject」,所以流氓页面的流量直接被阻断了。
关于最后一个「🎯Others」策略组,如果节点质量良好,直接选择成「🚀Proxy」来保证绝大部分网站的可访问性,也就是俗称的白名单模式:只有中国站点直连,其他统统走代理。而如果节点质量一般,就需要选择成「Direct」来保证网络的质量和速度了,这也是俗称的黑名单模式:只有需要代理的资源走代理,其他统统都直连。就我的经验来看,白名单模式体验更佳,原因是很多网站并没有被墙,但是访问速度却令人感到异常的难受(比如 GitHub),如果使用白名单模式,则可以大大提高这类网站的浏览体验。
为什么要使用分流规则
使用分流规则好处就是既可以利用固定的规则,保证主要的国内网站和 IP 使用直连策略,提高访问这些网站或服务的体验,也可以灵活的调整其他几种规则匹配成功时使用的策略。而策略可以是多样的。
在这个几个客户端的配置中,都支持很多种策略选择方式:
- 手工选择,选择该策略组使用哪个节点,这也是使用得最多的方式
- 测速选择,从策略组中选出连接到某个指定网站最快的节点
- 可用性选择,从策略组中由上至下,选出第一个可以使用的节点(可以使用的定义是能够通过节点访问到某个指定网站)
- 负载均衡,随机使用策略组中的某个节点,已达到代理流量在各个节点之间均衡的作用
使用分流规则方案,对于节点较多的情况下,可以有选择性的分配不同节点的功能,比如:
- 流量少速度快的节点用来访问文本资源,搜索结果等,降低时延获得近乎无墙的操作体验
- 大流量的低价节点用来访问流媒体资源或者下载资源,降低成本
- 专属节点用来收看有区域限制的 Netflix,访问有 IP 限制的内网资源、ipv6 站点等
对于没有太多节点的情况下,也可以灵活调整自己那些规则需要使用代理,哪些不用。那些需要直接拦截,哪些放行。
关于 QX 的几个重要的文档
- Quantumult X 不完全使用教程 https://www.notion.so/Quantumult-X-1d32ddc6e61c4892ad2ec5ea47f00917
- 建议把
GEOIP,CN,DIRECT
写到最后一个 remote policy 里面
- 建议在「其他设置」里「GeoLite2」的「来源」填写使用「
https://cdn.jsdelivr.net/gh/Loyalsoldier/geoip@release/Country.mmdb
」并开启「自动更新」。