【小白教程】10分钟搞懂分流策略 | 分流规则、策略组详解,如何DIY自己的专属分流策略,新手避坑指南!

一、策略分流是什么?


策略分流,简单来说,就是当你使用科学上网代理软件得时候,帮助你识别你的访问请求并选择对应得访问方式。我们之前用过的 小飞机SS 、SSR 以及V2rayN 等这些软件的时候,大多数人习惯使用PAC模式对吧,还有GFWlist选项,这些都是基础的分流规则,主要用来实现访问国内的网站走直连,访问谷歌、YouTube等国外资源的时候走代理节点。

然而像Clash、圈、圈X、surge、Loon 等软件,它们功能更加强大,我们可以通过分流规则,指定某一个应用或者网址访问走指定的策略组和节点。

比如你看HBO(Home Box Office)的时候只喜欢看亚洲区的影片,看Netflix的时候,必须使用机场中解锁了奈菲的节点,再者,你的机场里有很多IPLC专线节点,延迟低速度快但是倍率高,一直用的话 套餐流量不够,这时候就希望看视频看电影等流量消耗比较大的时候用普通节点,而电报聊天、浏览网页等流量消耗不大的时候使用IPLC节点。等等这些都属于策略分流

当然每个人的使用需求和使用习惯都不一样,我争取通过这一期视频,让很多新手朋友了解分流规则的大部分知识并自定义出适合自己的一套策略分流配置。

还是那句话,适合自己的才是最好的,如果你认可这句话,请暂停视频10秒钟,在评论区回复:适合自己的才是最好的!

好,接下来根据我写好的思维导图带大家把分流策略相关的知识串起来,方便大家理解!


二、代理模式

我们无论使用哪种科学上网软件,基本上都至少包含三种代理模式: 全局直连、规则代理、全局代理。圈x是通过长按小风车图标更改,Surge是在出站模式中选择。

  • 全局直连(DIRECT):无论访问什么网址及应用的请求将被直接发往目标服务器,等于没翻墙。
  • 全局代理(GLOBAL):就是无论访问国内还是国外,都会转发给代理服务器,意思就是 打开百度,聊微信都是翻墙出去转一圈再回来。
  • 规则模式(RULES):就是根据配置的规则决定转发策略,不同的流量走不同的节点或者直连等

三、策略

1. 内置策略

同样,大部分软件都至少包含以下三种内置策略:DIRECT、PROXY、REJECT 。

  • DIRECT : 将该请求直接发往目标服务器,就是走直连
  • PROXY : 就是走代理节点
  • REJECT : 拒绝该请求,当连接类型为 HTTP 时,会返回一个错误页面,主要用于去广告。

而除此之外,从Surge3.0开始,新增了规则类型REJECT-TINYGIF,使用此策略,将会返回一个 1px 的透明 GIF 图片,用于特定情况的广告屏蔽。 比如:腾讯系APP的广告请求如果被简单地 REJECT ,可能出现无限请求广告的情况,造成设备卡顿。遗憾的是圈X并没有该内置策略。

这里顺便提一下,小火箭内置的策略更多,除了上面说的4种,还有reject-img、reject-200、等等。感兴趣的朋友可以自己去研究下。

2. 代理策略

代理策略由用户自己定义,每个策略描述了一个代理服务,当使用该策略时即为通过该代理服务转发请求。说白了就是一个节点!

比如我之前分享的解锁网易云灰色音乐的策略里面只有一个解锁用的代理节点,这就是一个简单的代理策略。

3. 基础策略组

策略组就是多种策略嵌套在一起,根据一定的规则从子策略中选择一个最终策略。

  • select 策略组:通过 UI 菜单手动选择一个策略。
  • url-test 策略组:自动测速,并发测试所有子策略,选择延迟最低的策略。其中有以下几个参数需要注意:url:用于测试的 URL,测试地址可自定义,建议选择在全球都有节点的 URL,我们常用屏幕上的这个网址。
    timeout:测试的最长等待时间,超过该时间的策略将标记为失败不再继续等待。
    interval:每次测试的间隔时间。
    tolerance:容忍度,如果某几个策略测试结果相差不大,那么会导致在这几个策略中频繁切换,如果策略的代理服务器的出口 IP 不同,可能会触发目标网站的风险控制。所以加入了容忍度设计,仅当新一次的测试结果中,最佳策略比原选中策略的延迟差大于容忍度时,才会切换至新的策略。
  • fallback 策略组:选择可用的策略中,最靠前的策略。基本与 url-test 一致,区别在于 fallback 只关心策略是否可用,并顺序选择最靠前的可用策略,并不关心测速结果的具体值。可以通过调小 timeout 参数将缓慢线路也标记为不可用,该类型没有 tolerance 参数。
  • ssid 策略组:根据当前的 Wi-Fi SSID 选择一个策略。主要是针对有软路由环境得WiFi,当连接到指定WiFi SSID得时候切换到直连模式,当使用流量和其他WiFi时,走规则分流模式。
  • load-balance 策略组:负载均衡组,随机从子策略中选取一个策略使用。当配置了 url 参数时,会按照 fallback 组的行为进行可用性检查,然后仅从可用的子策略中随机选取。
  • 地区策略:顾名思义,就是把同一个地区的节点放在一起,比如香港、台湾,前面举例时说过,假如你只想看香港区的奈菲,那就把奈菲的分流指向香港策略组即可。
  • 特殊策略:比如IPLC线路的节点单独放在一起,解锁Steam等国外平台游戏的节点放在一组。
4. 应用策略组

这里应该就不需要过多解释了,Netflix分流就是访问所有Netflix相关的网站或应用指定走什么策略,国外流媒体就是所有国外的看视频、看电影的流媒体网站或者应用统一走指定的策略。


四、规则

分流规则是用来选择每个连接的出口策略。规则的匹配方式为自上而下,逐一测试。最末尾规则一定是一个 FINAL 规则,Clash中不叫final叫match,当所有规则都不匹配时使用。

规则由四个部分组成:类型、条件、策略和参数。当条件满足时,该规则匹配,使用该规则指定的策略。

1. 规则类型
1.1 域名规则
  • DOMAIN:严格匹配某域名。
  • DOMAIN-SUFFIX:匹配某域名及其子域名,如 DOMAIN-SUFFIX,baidu.com 可以匹配 baidu.com 和 pan.baidu.com,但是不会匹配baidu123.com。
  • DOMAIN-KEYWORD:简单的字符串搜索,只要域名包含该字符串就会匹配。
  • 注意:圈X中,需要把 DOMAIN 换成 HOST
1.2 IP地址规则

当连接的目标主机的 IP 地址符合时,匹配该规则。包含 IP-CIDR(IPv4地址段),IP-CIDR6(IPv6地址段),GEOIP (GEOIP数据库(国家代码))三种类型。

当目标主机名是一个域名或主机名时,IP 类型规则会触发本地 DNS 解析。根据解析得到的 IP 地址进行判断。当解析失败时:

  • 如果最终的 FINAL 规则带有 dns-failed 标记,那么将直接匹配 FINAL 规则。
  • 如果 FINAL 规则不带有 dns-failed 标记,该请求将直接失败。

IP 类型规则有一个专有的参数 no-resolve,如果一个 IP 规则带有该参数,那么

  • 如果目标主机名是一个域名,那么将跳过该规则,不触发 DNS 解析。
  • 如果目标主机名是 IP 地址,按规则进行判断。
  • 如果目标主机名是一个域名,且先前出现的 IP 规则已经触发了 DNS 解析获得了 IP 地址,那么使用该 IP 地址进行判断。
1.3 HTTP相关规则

仅对 HTTP 请求有效的规则,包含 URL-REGEX 和 USER-AGENT。比较特殊的是,由于只有进行 MITM 解密后才可获取到 URL,所以 URL-REGEX 对未解密的 HTTPS 连接无效。但是 USER-AGENT 规则却对未解密的 HTTPS 连接也有效,因为程序在使用 HTTP 代理时,会在发送 CONNECT 请求时带上自己 User Agent 的明文。

这个一般用于去广告的规则里,大家不用过多在意,我们直接调用网上大佬写好的规则即可。

1.4 其他规则

下面这些规则,我们常用的分流规则中其实很少使用,大家了解下即可。

  • SRC-IP-CIDR:可匹配连接来源 IP 地址,接管其他设备连接时可使用。
  • DST-PORT:目标端口匹配
  • SRC-PORT:源端口匹配
  • PROTOCOL:可根据连接的协议进行匹配,取值范围是 HTTP,HTTPS,TCP,UDP。
  • FINAL/MATCH:最终匹配,重要!必须有!
2. 规则集

RULE-SET 规则集可以将多个子规则放在一个单独的文件中,便于分享和复用。但是规则集中的规则不可以指定策略,整个规则集指向一个同一个策略。

大家之前配置里引用的那些分流规则,都是规则集。


五、如何DIY自己的分流策略

俗话说,适合自己的才是最好的。网上的各种懒人配置里使用的分流策略要么规则太多自己大部分都用不到,要么缺少自己需要的分流功能,所以很多朋友希望能配置一份满足自己需求的分流策略,下面大飛就给大家简单提供下配置思路。

在开始之前,先给大家看一下分流策略的简单流程图。

这里大飛简单罗列了几个懒人配置中常见的分流策略,而且我们配置中基本也是按照这个顺序排列的。

当我们手机打开一个APP的时候,比如YouTube,也就是对YouTube服务器发起一个数据请求,而我们使用的Surge或者圈x会接管此次请求,并从设置好的规则中进行逐条查询。

首先是本地网络,肯定是不匹配的,所以继续往下走,当走到YouTube规则集这里,匹配到对应的域名类规则,那么就根据设置中该规则集指定的策略分流出去,如图也就是咱们设置好的YouTube节点的策略组。而下面的规则集就不再进行查询匹配了。

由此可见,我们要DIY分流策略,第一步就是要,确定我们要使用哪些规则。

1. 确定规则

我们配置中的分流规则其实就是多个规则集,堆到一起来实现的,而这些规则集中包含的规则,涵盖的内容有多有少,举个简单的例子,

图中的YouTube规则集里面只有跟YouTube相关的域名或者IP才会写进去。

而国外媒体呢就包含了YouTube、Netflix、HBO、迪士尼+等等大部分流媒体应用。

如果你学过一些编程语言就不难理解了,这里YouTube就可以看成一个数组,而国外媒体就是一个二维数组。

所以说,如果你只看YouTube和Netflix,那就完全没必要把整个国外媒体规则都放进去,你只需要添加单独的YouTube和Netflix这2个简单的规则集就可以了。

同理,其他谷歌啊、电报啊、微软啊、苹果啊,根据你需求需要哪个就添加哪个。

那么这些单独的或者完整的规则集去那里找呢?

第一种方法:就是从你用过的网上的各种懒人配置中往下扒,比如打开我的圈X的完整版配置,需要哪个就添加哪个。如果你不知道这些配置中的规则集是干什么用的,那就在浏览器打开它的托管链接,里面的内容一目了然。而且有的规则集里面还会给你备注上。

第二种方法:就是从以下几个大佬的GitHub仓库中找,需要哪个用哪个。同样打开对应的文件就可以看到规则集的内容。这里需要注意的是,这些GitHub中有些规则集你添加到你的软件中可能会报错,主要是因为Surge、圈x、Clash中的规则类型有些许的不同,主要是一些涉及HTPP类的规则,比如我遇到过禁BT、迅雷下载的一个规则集,我放在Surge中就报错,不会修改的话那就不用它就是了。

另外需要特别注意的是:

规则集的排序非常重要,也就是说要明白这些规则集的包含关系,因为规则的遍历匹配是从上而下执行,匹配到了就停止不再往下继续遍历,比如YouTube规则要放在国外媒体前面,而完整的国外域名规则包含了YouTube、国外媒体、电报、Netflix等等这些内容所以要放在他们的后面,假如你把完整的国外域名规则放在了第一条,那好了,你所有对国外的访问走到第一条的时候全匹配到了,全部按照这条指定的策略组分流访问了,那你后面设置那么多YouTube、Netflix这些单独的策略组就毫无意义!

还有,就是规则条数一定要在满足你需求的前提下,尽量的少,因为遍历也是需要时间的,哪怕你手机性能再好,也架不住你访问一次百度,微信聊个天就要遍历10万条的规则吧。

2. 确定策略

好了,当你罗列好你需要的规则以后,就需要设置对应的策略组。

第一步,要先想好你需要哪些基础策略组,是想手动UI选择节点呢,还是希望使用自动测速选择节点,或者是需要负载均衡?还有是否需要设置香港、台湾、美国这种地区节点的策略组?以及,是否需要按照我懒人配置中的习惯,用一个类似节点选择这种总调度策略组把手动选择、自动选择等等包在里面。

第二步,就是设置应用策略组,比如你添加了Netflix分流规则,那么你就需要设置一个Netflix的策略组,这里面是包含整个机场订阅的手动选择呢,还是把第一步设置的地区策略组嵌套进去,还是只添加解锁奈菲的节点?甚至是再复杂一点,只要香港节点中标记了解锁Netflix的节点?

3. 添加策略组

当你规则和策略组都设计好了以后,就可以开始正式设置了,这里我建议先添加策略组。

自定义策略组主要有两种,一种是通过软件的UI界面直接添加,另一种就是在配置文件中修改。

我之前出过圈x、Surge、Clash的相关教程中都有讲到,不会的朋友可以去看以下,这里就不再啰嗦了。

这里着重提以下几点:

  • 当你在配置中修改的时候,一定要注意对应的格式,大家可以参考我Surge和圈x懒人配置中的写法,尤其是英文逗号,空格这些细节。
  • 圈x通过UI添加,是在首页上面的图标中,找到策略状态一项,点击内容区左上角的添加按钮,然后设置。
  • 圈x策略类型中的,自带的3种策略类型,available其实是对应前面讲过的fallback故障切换。目前商店版是不支持自动选择延迟最低的功能,我没有圈X的TF权限,所以不知道TF版当前是否支持。
4. 添加规则

当你设置好了策略组以后,就可以开始设置你的分流规则,同样可以通过UI和后台配置2种方式添加修改。

这里需要特别注意的是,如果你是通过UI添加,那就简单了,把对应的托管链接粘贴进去,策略选项选中你上面添加好的某一个策略组即可。而如果你是通过后台配置修改,切记格式写法,以及每条规则集指定的策略组名要和你前面添加的策略组一模一样,空格,emoji图标都要一模一样才可以。

这几个月以来在我的电报群里经常看到有新手出过这种错误,比如他只把我的分流规则复制到他的配置中了,但是策略组呢只用的内置策略,比如proxy,direct,或者用的其他人的策略组配置,问我为什么报错,为什么分流不生效等等。我的懒人配置中习惯用 图标+空格+节点选择或者全球直连这样的写法,而你没有这个名字的策略组,那能不出错么?

5. 懒人修改法

如果还是有朋友觉得太难,我不知道该用哪些规则,我不知道如何合理排序,那大飛教大家一个懒人办法。

我们打开这个第三方订阅转换的网址,输入一个机场订阅链接,或者一个单独的节点,选择你需要转换的软件类型,选择这个【全分组_重度用户使用】,然后点击生成订阅链接,点击复制,直接在浏览器中粘贴打开。把里面的分流规则和策略组全复制出来,然后删除你不需要的,然后再添加一些自己需要的其他规则集,修改好对应的策略组名即可。

而策略组中的节点如何按自己的需求过滤,比如前面提到过的,Netflix策略组中,只需要香港地区并且解锁Netflix的节点如何实现呢,Surge可以通过Sub-Store模块,使用方法可以去看Surge教程第一期,而圈x可以使用自带的资源解析器过滤,参考圈x系列教程第四期,好像就在本视频发布的前一天圈x商店版更新后,也支持Sub-Stroe了,我还没时间去试,大家可以去研究下。

6. 逐步完善、修改、更新

至此相信大部分朋友,已经可以配置好适合自己的一套分流策略了,接下来就是在日常使用中根据各种情况,逐步的完善,修改。当你使用过程中出现一些奇怪的问题时,要学会用排除法解决,比如你打不开某个网页或者APP加载特别慢,可以试着先禁用可能和它相关的分流规则,再或者更改下规则集排序试试?再或者换个机场节点、或者修改下指定的策略组试试?相信方法总比困难多,多动脑多动手少动嘴,研究出来的你才能脱离小白标签,当你帮助各种群里的其他网友解决了你遇到过的问题,被别人回复一句,解决了,谢谢大佬指点,不香么?哈哈

六、如何托管规则集和配置

这一部分内容是我的一个电报群里的粉丝提出来的,强烈要求我在这期视频中讲一下。

他的需求是什么呢:

就是假如,举个例子哈,在网上它找到了国外媒体这条规则集,里面包含了YouTube、Netflix等等很多国外流媒体的规则,而他实际使用中,只需要YouTube分流,但是找不到单独针对YouTube的规则集,如果直接使用国外媒体这条规则集,觉得每次都要遍历这么多规则,太繁琐,无论是出于对性能的考虑还是个人的强迫症习惯,所以提出如何自己把其中的YouTube相关的规则挑出来做成一个规则集并用一条链接导入到手机里。

具体操作步骤,请观看视频教程~!

© 版权声明
THE END
喜欢就支持一下吧
点赞18赞赏
分享
评论 抢沙发

请登录后发表评论