XuLaLa.Tech

首页客户端下载Windows 使用V2Ray 教程SSR 教程Clash 教程

ShadowsocksR PC客户端中的 [代理规则 – 用户自定义] 功能使用教程

2025.04.21
机场加速器梯子推荐:

优质SS/SSR/Trojan/Xray/V2Ray机场推荐 | IPLC/IEPL专线加速器梯子推荐 | 解锁奈飞Netflix/HBO/Hulu等国外流媒体

ShadowsocksR PC客户端在 4.6.0 版本中添加了一个

代理规则选项 [用户自定义]

,说实话我一直没注意到,还是一个逗比在网站问我这个功能的作用是什么时,我才突然发现这个功能,就特地去了解了一下,然后写个简单的使用教程。


首先先明白 代理规则 是干什么的,和PAC(系统代理模式)是什么区别:

ShadowsocksR目前分两种规则方式,那就是 系统代理模式(PAC、全局,主要解释PAC) 和 代理规则 。

PAC规则

 是根据PAC文件中的黑白地址名单来判断那些网站走代理。也就是

判断 流量是否进入客户端。

当你要访问的网站满足 PAC里的设置,那么浏览器就会向代理服务器也就是客户端发送网站请求数据,这时候我们才进入了ShadowsocksR客户端,接下来我们就进入了代理规则判断环节。

代理规则

 是根据IP判断,按选择的规则来

判断进入 客户端的流量是直连还是走代理。

当你访问 XXX 网站,然后是全局或者满足PAC条件(不满足条件就直接直连访问了,也不会有接下来的代理规则判断了)从而访问

 XXX网站的请求数据流量进入了客户端

,然后客户端会根据 

XXX网站的IP来判断

,如下:

  • 绕过局域网

    :当IP属于局域网内的,那么SSR客户端就会让流量直连,反之则会让流量走代理(发送到SSR服务端)。

  • 绕过局域网和大陆

    :当IP属于大陆内或局域网的,那么SSR客户端就会让流量直连,反之则会让流量走代理(发送到SSR服务端)。

  • 绕过局域网和非大陆

    :当IP属于大陆外(非大陆IP都算大陆外)或局域网的,那么SSR客户端就会让流量直连,反之则会让流量走代理(发送到SSR服务端)。

  • 全局

    :无论什么情况都直接走代理。

这两种判断方式是相互配合使用的,先用

系统代理模式来判断是否让数据进入SSR客户端

,再用

代理规则来判断进入SSR客户端的数据是直连还是走代理。代理规则为:绕过局域网

,则判断 www.google.com 域名的IP是否是局域网IP,然而不是局域网IP,于是走代理。

代理规则为:绕过局域网和大陆

,则判断 www.google.com 域名的IP是否是局域网IP 或 大陆IP,然而不是局域网IP或大陆IP,于是走代理。

代理规则为:绕过局域网和非大陆

,则判断 www.google.com 域名的IP是否是局域网IP 或 非大陆IP,然而是非大陆IP,于是不走代理,直连。

代理规则为:全局

,不判断 www.google.com 域名的IP,直接走代理。

你们大概能明白了吗?不明白可以评论区问我。


代理规则中的 

用户自定义

,就是可以让你自定义什么

域名或IP 走代理还是直连

,比PAC更方便添加/编辑规则,以后完全可以抛弃 PAC,而改用 用户自定义 代理规则(系统代理模式选择全局,浏览器扩展也设置 127.0.0.1 1080(默认端口))。

实际上 SSR 安卓客户端中的 

ACL

 和 

代理规则 – 用户自定义

 是一样的。

接下来讲解代理规则格式等内容。

文件位置

代理规则 – 用户自定义

 的规则文件是 ShadowsocksR.exe 客户端同目录下的 

user.rule

 文件(如果没有就自己新建)。


提供一个Github上面找到的 ACL(PC客户端 规则文件,带去广告):https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/gfwlist-user.rule

如果不满意,可以去 

Github 搜索 ACL

,应该会搜到类似的文件!

你们可以

边参考这个规则,边理解下面的解释,当然最好自己动手多测试几次。

当然你也可以直接下载这个现成的规则文件到ShadowsocksR客户端同目录下,并重命名为 

user.rule

 文件名拿来用。

文件格式

注释

#

号开始的一行为注释内容,

注意:#号的前面不得有空格

,例如:

  1. # 我是注释,我会被忽略,一行的行首字符

    必须是

    #号

    才行。

基本规则

规则文件内,除了空行和注释,其它的

每行都是一条规则

,规则之间有

先后次序之分

。若出现相同的规则,那么

后一条规则可覆盖前一条规则

规则分两类:
  • 域名规则
  • IP段规则

规则匹配结果类型

规则匹配结果类型有 四种:

remoteproxy、localproxy、direct、reject

。均可用于两类规则。

四种结果的含义:
  1. remoteproxy:

    经过SSR服务器连接(走代理)

  2. localproxy:

    经过本地代理连接,或没有配置本地代理时使用直连连接(本地代理指的是:

    选项设置 – 二级(前置)代理

  3. direct:

    直连连接(直连,不走代理)

  4. reject:

    拒绝连接(可用于屏蔽广告,当然前提是用

    系统代理规则:全局模式

    ,否则

    只有进入SSR客户端的广告才会被过滤

域名规则

  1. 格式:
  2. hostname rule
  3. # 域名 规则
hostname

 格式支持三种写法:

  1. 直接写完整域名,如 b.com ,此时不匹配 a.b.com 这类子域名。
  2. # 配置[b.com remoteproxy],即代表只有 b.com 走代理。
  3. 带通配符的域名,如 *.b.com ,此时不匹配 b.com,但能匹配 a.b.com 这类子域名。
  4. # 配置[*.b.com remoteproxy],即代表只有 b.com 的子域名走代理,b.com 将继续往下面判断,如果下面没有 b.com 的规则,那么就走代理。
  5. 全部匹配的域名,比如.b.com,用于匹配 b.com 及 a.b.com 这类子域名的 ,任何末尾为 b.com 的域名均匹配。
  6. # 配置[.b.com remoteproxy],即代表 b.com 以及其所有子域名例如 a.b.com 都走代理。
注意:b.com.b.com
是会
相互覆盖的(后写的有效)
,如果你需要
b.com
和它的子域名
走不同的规则
,那么分别写
b.com*.b.com
两条规则即可。

域名规则还有一种特殊的规则 rule 写法,

例如(不过一般用不上,忽略即可):
  1. a.com 127.0.0.1
  2. .b.com 123.123.123.123

这种规则相当于给 

指定域名 (a.com)

 或 

一组子域名 (.b.com)

 一个相应的IP,但

不直接指定最终结果。

最终结果将由IP段规则决定,比如接下来的

IP规则判断

中,

127.0.0.1

 规则判断结果是直连,那么将使用此规则所指定的IP来连接。

IP段规则

  1. 格式:
  2. ip1 ip2 rule
  3. # IP段起始 IP段结尾 规则
  4.  
  5. # 如果只要控制一个IP,那么 ip1 和 ip2 写一样就行,例如:
  6. # 1.0.1.1 1.0.1.1 remoteproxy
  7. # 1.0.1.1 走代理
注意:
ip2 必须大于或等于 ip1
,此规则应用于包含 ip1、ip2 及它们之间的所有IP。如果两条不同的IP规则发生IP重叠,那么重叠的那部分以
后一条规则为准

利用这个规则可以编写基于黑名单或白名单的IP规则,例如在规则文件内先写:

  1. :: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff remoteproxy
  2. 0.0.0.0 255.255.255.255 remoteproxy
  3.  
  4. 1.0.1.0 1.0.1.255 localproxy
  5. ……(等等其他规则)
  6. # 解释:
  7. # 如果你访问的IP是 1.0.1.5 ,那么第二行规则判断该IP走代理

    ,第四行规则判断

    该IP走直连(或者说二级代理)。
  8. # 如果你访问的IP是 1.0.2.5 ,那么第二行规则判断该IP走代理

    ,第四行规则判断

    该IP走代理(因为没有在IP段规则范围内)。

前两行这样意味着所有的IP(第一行是IPv6全部IP段,第二行是IPv4全部IP段)默认走代理,然后利用

后一规则覆盖前一规则

来设置

不走代理的IP

,所以这就是

白名单规则。

反过来如果所有IP设置为 

localproxy

,那么就是

黑名单规则:
  1. :: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff localproxy
  2. 0.0.0.0 255.255.255.255 localproxy
  3.  
  4. 1.0.1.0 1.0.1.255 remoteproxy
  5. ……(等等其他规则)
  6. # 解释:
  7. # 如果你访问的IP是 1.0.1.5 ,那么第二行规则判断该IP直连(或者说二级代理)

    ,第四行规则判断

    该IP走代理。
  8. # 如果你访问的IP是 1.0.2.5 ,那么第二行规则判断该IP直连(或者说二级代理)

    ,第四行规则判断

    该IP继续走直连(或者说二级代理)。

规则匹配次序

当你访问 

www.google.com

 ,浏览器配置

全局模式

(或者PAC模式,但谷歌被墙,PAC判断为走代理),然后浏览器会把谷歌网址的访问请求发给 SSR 客户端,然后:

  1. ┏━ SSR客户端 代理规则选择:用户自定义

    (你已经配置好了规则),然后 SSR客户端 会去代理规则中匹配 域名:

  2. ┗┳━ 如果匹配域名规则返回结果为直连

    ,那么就直连不走代理(将不再继续 IP判断)。

  3. ┣━ 如果匹配域名规则返回结果为走代理

    ,那么就直接走代理(将不再继续 IP判断)。

  4. ┗━ 如果匹配域名规则没有返回结果(就是没找到相应规则)

    ,那么就会去 SSR服务端 请求域名的 DNS解析,得到 IP 后,

    再继续匹配 IP规则:
  5. ┗┳━ 如果匹配IP规则返回结果为直连

    ,那么就直连不走代理。

  6. ┣━ 如果匹配IP规则返回结果为走代理

    ,那么就直接走代理。

  7. ┗━ 如果匹配IP规则没有返回规则(没有找到相应规则)

    ,那么就直接走代理。所以,

    空的 user.rule 文件等于全局模式(所有域名/IP走代理)。

全网也只有 SSR的WIKI才有这个教程,所以我参考WIKI的内容,因为原版WIKI就很详细了,所以我只是在原版内容的基础上做了一点补充。

因为SSR项目已删除,所以我就引用了SSRR fork的WIKI:https://github.com/shadowsocksrr/shadowsocks-rss/wiki/C%23-Proxy-Rule

© 2010-2022 XuLaLa 保留所有权利 本站由 WordPress 强力驱动
请求次数:69 次,加载用时:0.665 秒,内存占用:32.19 MB