Clash的System Proxy 中有两个 系统代理模式:PAC模式 和 HTTP模式,它们都是基于系统代理,对于不遵循系统代理的软件无效。(具体参考下方第三章内容)
HTTP 模式,通过一个 HTTP 端口来设置代理,这个端口指向的是 clash 服务的本地端口(默认端口 7890)。
在Clash的HTTP模式下,所有的流量都会通过这个端口转发给 Clash本地代理。Clash本地代理根据预设的规则,判断是否需要转发行为(比如是否请求到远程代理服务器、是否直连、是否拒绝连接)。
Clash的HTTP模式的下支持设定 Specify Protocol,用于指定在Clash代理中使用的协议,如HTTP、HTTPS、SOCKS5等。如果指定了协议,Clash将只会转发指定协议的流量。这在需要优化代理性能时比较有用。
PAC 文件是系统支持的一个代理规则文件,用 JavaScript 语言编写,可以定义哪些网址走代理,哪些网址不走代理。
PAC 文件的全称是 Proxy Auto-Config 文件,是一种自动配置代理的方法,PAC 文件可以存放在本地或者远程服务器上,只要能通过 URL 访问到。
PAC 文件中有一个名为 FindProxyForURL 的函数,它接收两个参数:url 和 host,分别表示要访问的网址和主机名。这个函数的返回值是一个字符串,表示要使用的代理类型和地址。 例如,如果返回值是 “DIRECT”,表示不使用代理;如果返回值是 “PROXY 127.0.0.1:7890”,表示使用本地的 Clash 代理。
Clash的PAC 模式:先经过 PAC 规则处理后,再来决定是否要转发到 Clash 的本地端口。PAC 规则是一个 JavaScript 函数,用来判断访问的网址是否需要走代理。如果需要走代理,就会转发到 Clash 的本地端口;如果不需要走代理,就会直接访问。
在 Clash 的 PAC 模式下,首先会根据 PAC 规则判断该请求是否需要通过代理访问。如果需要代理,则会将请求发送到本地代理,然后本地代理再根据配置的 Profile 规则来决定如何处理这个请求,最终将请求发送到目标服务器。而在 HTTP 模式下,所有的流量都会被发送到本地代理,然后根据配置的 Profile 规则来决定是否需要代理,最终将请求发送到目标服务器。
本地PAC服务器使用预设的规则,判断是否需要代理,如果需要,则将请求转发给Clash本地代理。
Clash本地代理根据预设的规则,判断是否需要转发请求到远程代理服务器,如果需要,则将请求转发给远程代理服务器。
目标服务器返回响应,依次经过远程代理服务器、Clash本地代理和本地PAC服务器,最终返回给客户端。
总体而言,Clash的PAC模式和HTTP模式的区别在于代理规则的设置和请求处理的方式。在PAC模式下,代理规则由PAC文件来定义,请求的处理方式则需要先经过本地PAC服务器再经过本地代理和远程代理服务器。而在HTTP模式下,代理规则由Profile文件来定义,请求则直接经过本地代理和远程代理服务器。
Clash的PAC模式下,代理规则实际上由PAC文件和profile文件共同决定
PAC文件中的规则主要用于决定哪些流量需要代理,而profile文件中的规则则用于决定如何代理这些流量。当请求到达Clash时,会首先根据PAC文件中的规则判断是否需要代理。如果需要代理,则转发流量到Clash本地服务代理,Clash会根据全局规则和profile文件中的规则来选择合适的代理节点,然后将请求转发到该节点。如果不需要代理,则直接将请求发送到目标服务器。
需要注意的是clash添加ss节点,PAC文件和profile文件中的规则可能存在冲突,一般来说,PAC文件中的规则优先级更高,因为它在Clash处理之前。
Global 模式是全局代理模式,所有流量都走代理,适合访问国外网站,但会消耗更多流量和影响国内网站的速度。Clash 在 Global 模式下,不会使用profile 中的Rule 规则。而是直接使用某个全局代理规则。
Rule 模式是按规则代理模式clash安卓游戏模拟器clash添加ss节点。,根据配置文件中的规则来匹配访问的网站,仅加速国外网站,国内网站不受影响,节省流量,访问速度快,但少部分国外网站无法访问。
Direct 模式是直连模式,所有流量都不走代理,适合访问国内网站,但无法访问被墙的国外网站。
Script 模式是脚本模式,可以通过编写 JavaScript 脚本来自定义代理规则,更灵活和强大。
profile 是Clash 的配置文件,其中主要包含了代理相关的配置项,还包含了 Clash 的一些基础配置信息,如日志级别、端口号等。
url-test: 通过测试 url 的响应时间来确定最快的代理节点,适合用于自动选择最优节点的场景;
fallback: 通过检测代理节点的可用性来确定最优的代理节点,适合用于避免故障节点的场景;
load-balance: 通过轮询或随机算法来分配代理节点,适合用于负载均衡的场景;
在这个示例中,每个规则由三个部分组成,分别是规则类型、匹配模式和代理策略,它们之间使用逗号隔开。
匹配模式也是必填项,它根据规则类型的不同,可以是域名后缀、域名关键字、完整域名、IP 地址、地理位置、浏览器 User-Agent 字段或 URL 正则表达式。
代理策略是可选项,表示满足规则的请求应该采取何种代理方式,可以是 Proxy、Direct 或 Reject。Proxy可以指定一个具体的 Proxy Group 或者 一个 具体的Proxy(Proxies中的一个)。
需要注意的是,每个规则是按照从上到下的顺序进行匹配的,所以在编写自定义规则时需要注意规则的顺序,以免出现不符合预期的情况。
(通过这种方式配置对比直接编辑Profile,当订阅的profile更新时,不会丢失自定义配置。)
Clash 的 Mixin 模式是一种可以对配置文件进行预处理的功能,可以用 YAML 或 JavaScript 语言来编写 Mixin 脚本,实现自定义规则、节点分组、DNS 设置等。
parses可以指定为某个订阅地址添加额外配置,且不会随着 profile 更新而被覆盖丢失。
其中的 url 改成你的订阅地址即可。(地址可以打开Profiles下对应配置 profile文件的 settings 中 复制其中的URL)
Clash 是一款支持多种协议的代理软件,它可以通过普通代理、TAP 模式或 TUN 模式来代理 TCP 流量。
普通代理模式:是通过设置系统代理或者浏览器插件来实现的,它只能代理遵循系统代理设置的软件,对于不遵循系统代理的软件无效。
TUN 模式:通过创建一个 TUN 虚拟网卡,将所有 IP 层的流量转发给 Clash 处理,从而实现对不遵循系统代理的软件的代理。TUN 模式相比 TAP 模式在 Windows 下性能更好,支持 UDP 和 IP 类请求。
TAP 模式:通过创建一个 TAP 虚拟网卡,将所有以太网层的流量转发给 Clash 处理,从而实现对不遵循系统代理的软件的代理。 TAP 模式相比TUN模式更容易设置,但性能较差。不支持直接处理 UDP 和 IP 类请求,会增加额外的开销。
Clash本身是一个基于HTTP协议的代理服务器,所以默认情况下只能代理使用HTTP协议的流量,不能直接代理TCP流量。
Clash提供了两种方式来代理TCP流量:TUN模式和TAP模式。这两种模式都是通过创建虚拟网络设备来实现的。
TUN 模式和 TAP 模式都可以实现真正的 VPN 模式,可替代 SSTap 等软件,同时支持游戏加速等功能。需要注意的是,使用TUN模式或TAP模式可能会对网络性能产生一定的影响,因此需要根据实际情况进行选择和调整。
TAP 不支持 UDP 和 IP 请求的意思是,它不能像 TUN 模式那样直接处理这些请求,而是需要进行额外的处理。 TAP 模式可以用于代理所有流量,但是它不能将 UDP 和 IP 类请求直接转发给 Clash 处理,而是需要对它们进行封装和解封装。这样做会增加额外的开销,而且可能导致一些问题,比如 UDP 的 NAT 穿透、IP 的分片和重组等。
TUN模式是一种基于IP层的虚拟网卡代理模式。在TUN模式下,Clash会创建一个虚拟的TUN网卡,将代理客户端的网络流量转发到这个虚拟网卡上,然后再将流量发送到Clash代理服务器上。由于TUN模式只代理IP层的数据包,因此需要在代理客户端上进行额外的配置,将要代理的网络流量路由到虚拟网卡上。
这里的name指定了创建的虚拟网卡的名称,addr指定了虚拟网卡的IP地址,netmask指定了子网掩码,gateway指定了虚拟网关的IP地址。
TAP模式是一种基于二层的虚拟网卡代理模式。在TAP模式下,Clash会创建一个虚拟的TAP网卡,将代理客户端的网络流量转发到这个虚拟网卡上,然后再将流量发送到Clash代理服务器上。由于TAP模式代理的是二层的数据包,因此不需要进行额外的配置,代理客户端可以直接向虚拟网卡发送数据包。