常规使用模式
Clash 客户端使用流程
- 购买订阅,获取订阅地址
- 配置 Clash 客户端订阅
- 配置 Clash 客户端规则(通常不需要配置,购买的订阅地址会带规则信息)
- 启动 Clash 客户端
- 指定本地端口(通常 Clash 客户端默认,如:7890、7897)
订阅配置信息
订阅节点信息
本地代理端口信息
系统代理配置信息
Clash 客户端从订阅地址获取的订阅节点通常是多个的,而客户端软件默认只会使用其中的一个节点。代理的流程是,客户端软件会在本地生成一个端口,并通过该端口与所选订阅节点进行数据交换。当我们在客户端软件中操作代理开关时,实际上是将操作系统的代理配置修改为客户端生成的这个本地端口地址,例如:7890。此时,操作系统的代理配置中会显示为 127.0.0.1:7890。
Clash 代理的流程如下:
操作系统请求 -> 本地端口(7890 或 7897,具体端口因客户端软件而异)-> Clash 客户端中转 -> Clash 节点 -> 被墙外网
这种方式在使用 Clash 客户端进行科学上网时通常没有问题,但订阅的节点大部分会处于闲置状态,因为 Clash 只会选择一个节点进行代理访问。
扩展思路
如果我们能实现一种机制,将 Clash 订阅的所有节点或部分节点转换为多个本地端口,每个端口映射到一个不同的 Clash 节点,那么在不同指纹浏览器环境中就可以配置不同的代理,类似于购买多个代理 IP 的形式。这样不仅能够充分利用订阅的节点,还可以提高节点的利用率,降低额外购买代理 IP 的成本。
监听者模式
Clash 提供了一种监听模式,可以解决上述需求,并且不会影响正常使用 Clash 客户端的所有功能。要实现这一点,我们需要基于现有的 Clash 客户端配置,对配置文件进行适当调整。
获取配置文件
以下为一个范例,实际不同订阅地址获取到的 Clash 客户端配置可能有所不同,但都会包含以下 proxies
配置部分。我们只需要关注这一部分的配置信息。
mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
log-level: info
external-controller: '127.0.0.1:9090'
dns:
enable: true
ipv6: false
default-nameserver: [223.5.5.5, 119.29.29.29]
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
use-hosts: true
nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query']
fallback: ['https://doh.dns.sb/dns-query', 'https://dns.cloudflare.com/dns-query', 'https://dns.twnic.tw/dns-query', 'tls://8.8.4.4:853']
fallback-filter: { geoip: true, ipcidr: [240.0.0.0/4, 0.0.0.0/32] }
proxies:
- { name: '中国香港', type: ss, server: 2c1pxt70c3wovpi-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: 7c83123b-dbce-4eaa-99d8-a5375e4a5e76, udp: true }
- { name: '中国台湾', type: ss, server: i4bmvbyi1qqmn86-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: b12dbf40-b0f0-4ae7-b467-9770bbe417cc, udp: true }
- { name: '新加坡', type: ss, server: 27yisychzummw6a-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: bf01255e-7d99-4d19-bc04-f3d947d54687, udp: true }
- { name: '日本', type: ss, server: 2hjn0ex4v0wkush-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: 9449285e-9301-429f-ab28-ffeb4c24e322, udp: true }
proxies
配置中每一行代表一个节点配置信息。我们需要特别关注的是 name
这个字段名称。
增加节点监听配置
mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
log-level: info
external-controller: '127.0.0.1:9090'
dns:
enable: true
ipv6: false
default-nameserver: [223.5.5.5, 119.29.29.29]
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
use-hosts: true
nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query']
fallback: ['https://doh.dns.sb/dns-query', 'https://dns.cloudflare.com/dns-query', 'https://dns.twnic.tw/dns-query', 'tls://8.8.4.4:853']
fallback-filter: { geoip: true, ipcidr: [240.0.0.0/4, 0.0.0.0/32] }
proxies:
- { name: '中国香港', type: ss, server: 2c1pxt70c3wovpi-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: 7c83123b-dbce-4eaa-99d8-a5375e4a5e76, udp: true }
- { name: '中国台湾', type: ss, server: i4bmvbyi1qqmn86-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: b12dbf40-b0f0-4ae7-b467-9770bbe417cc, udp: true }
- { name: '新加坡', type: ss, server: 27yisychzummw6a-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: bf01255e-7d99-4d19-bc04-f3d947d54687, udp: true }
- { name: '日本', type: ss, server: 2hjn0ex4v0wkush-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: 9449285e-9301-429f-ab28-ffeb4c24e322, udp: true }
listeners:
- {name: '中国香港节点监听', type: mixed, port: 46001, proxy: '中国香港'}
- {name: '中国台湾节点监听', type: mixed, port: 46002, proxy: '中国台湾'}
- {name: '新加坡节点监听', type: mixed, port: 46003, proxy: '新加坡'}
- {name: '日本节点监听', type: mixed, port: 46004, proxy: '日本'}
listeners:
监听器,它可以监听配置的指定节点,将指定的某个节点的流量转发到本地端口。每一行代表一个节点的监听配置name:
当前监听器的名称(命名不可重复)type:
mixed 表示混合类型port:
转发的本地端口(端口未被使用)proxy:
要监听的代理节点名称,即proxies
中某个节点的name
名称
重新应用配置
将修改后的配置文件重新应用到 Clash 客户端中,即可生效。
验证代理端口
可以通过以下三种方式验证代理端口:
- Nmap
https://nmap.org/download.html
- telnet
telnet localhost 44001
telnet localhost 44002
telnet localhost 44003
telnet localhost 44004
- 指纹浏览器
注意事项
为了关闭 Clash 客户端的订阅自动刷新功能(防止意外刷新配置丢失),订阅信息需要手动刷新。请注意,刷新订阅信息后,之前修改的配置将会被覆盖,因此在手动刷新之后,需要重新进行人工配置。目前,有一些在线工具可以帮助转换订阅配置,您可以在转换后将 listeners
部分拷贝出来并粘贴到自己的 Clash 配置中。这种方法相对简单。例如,您可以使用以下工具:https://www.kjfx.cc/c/socks.html