常規使用模式#
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