Clash Party 链式代理配置说明
Clash Party 链式代理配置说明
本文适用于以下场景:使用 Sub-Store 合并多个机场订阅,并将合并后的订阅导入 Clash Party;普通机场节点作为第一跳,名称中含“住宅”的 SOCKS 节点作为第二跳出口。
最终链路为:
本机 → 机场入口节点 → 住宅 SOCKS 节点 → 目标网站目标网站看到的是住宅 SOCKS 节点的出口 IP,而不是第一跳机场节点的 IP。
一、配置原理
这套配置不需要在 Sub-Store 中单独写入 dialer-proxy。Sub-Store 只负责合并和输出节点,Clash Party 的 JavaScript 覆写会在订阅加载后,直接修改最终生成的配置。
脚本会检查全部节点,只对同时满足以下条件的节点添加链式拨号设置:
节点名称中包含“住宅”节点类型为 socks5 或 socks符合条件的节点会被动态添加:
dialer-proxy: "🛫 机场入口"例如原节点为:
- name: "日本住宅ip" type: socks5 server: 服务器地址 port: 端口经过 JavaScript 覆写后,实际运行配置会变成:
- name: "日本住宅ip" type: socks5 server: 服务器地址 port: 端口 dialer-proxy: "🛫 机场入口"这表示“日本住宅ip”在连接自己的 SOCKS 服务器时,不直接从本机连接,而是先通过 🛫 机场入口 当前选中的节点。
因此,真正建立两组之间联系的并不是策略组名称,也不是 🚀 Proxy 中的选择关系,而是住宅节点内部的:
dialer-proxy: "🛫 机场入口"二、三个核心代理组
脚本中有三个与链式代理直接相关的策略组。
🚀 Proxy
这是总出口选择组。
其中既包含:
🧦 SOCKS落地也包含订阅中的普通节点。
所以它同时支持两种使用方式:
选择“🧦 SOCKS落地”=使用链式代理选择普通机场节点=不使用链式代理🛫 机场入口
这是链式代理的第一跳。
该组使用:
"include-all": true所以会显示订阅中的全部实际节点。
实际使用时,应在这里选择一个普通机场节点,例如:
美国1美国2香港01日本01不要在入口组中选择名称含“住宅”的 SOCKS 节点,否则可能形成异常调用或循环。
🧦 SOCKS落地
这是链式代理的第二跳。
该组通过:
filter: "住宅"只显示名称中含“住宅”的节点,例如:
日本住宅ip美国住宅01洛杉矶住宅这些住宅 SOCKS 节点已经被 JavaScript 自动添加:
dialer-proxy: "🛫 机场入口"所以它们会通过第一跳节点建立连接。
三、如何使用
使用链式代理时,在 Clash Party 中这样选择:
🛫 机场入口:选择普通机场节点,例如“美国1”🧦 SOCKS落地:选择住宅节点,例如“日本住宅ip”🚀 Proxy:选择“🧦 SOCKS落地”实际链路为:
本机 ↓美国1 ↓日本住宅ip ↓目标网站如果 AI 分流组仍然使用 🚀 Proxy,则继续这样选择:
🤖 OpenAI → 🤖 AI分流🤖 AI分流 → 🚀 Proxy🚀 Proxy → 🧦 SOCKS落地不使用链式代理时,直接在 🚀 Proxy 中选择普通节点:
🚀 Proxy → 美国2实际链路为:
本机 → 美国2 → 目标网站此时不会经过 🛫 机场入口 和 🧦 SOCKS落地。
需要注意:如果直接在 🚀 Proxy 中选择名称含“住宅”的 SOCKS 节点,该节点本身已经带有 dialer-proxy,仍然会走链式代理。若要完全关闭链式代理,应选择普通机场节点。
四、配置和排查要点
- 住宅节点名称必须包含“住宅”,否则不会进入
🧦 SOCKS落地,也不会被脚本添加dialer-proxy。 - 住宅节点类型应为
socks5或socks。在 Mihomo 中,常见 SOCKS 节点通常显示为Socks5。 🛫 机场入口中应选择普通机场节点,不要选择住宅 SOCKS 节点。🚀 Proxy选择🧦 SOCKS落地时才是链式代理;选择普通节点时是单节点代理。- 若
🧦 SOCKS落地为空,优先检查节点名称是否包含“住宅”。 - 若可以连接但出口 IP 仍是机场节点,检查运行配置中的住宅节点是否出现:
dialer-proxy: "🛫 机场入口"- 若完全无法访问,可能是入口节点失效、SOCKS 节点失效、账号密码错误,或两跳协议组合不兼容。
- 刷新 Sub-Store 订阅后,应重新刷新 Clash Party 配置,确保 JavaScript 覆写再次执行。
- 这份脚本会完整覆盖
proxy-groups、rules和rule-providers,因此后续新增分流规则时,应直接在本脚本中修改。 - 脚本中的规则集地址依赖网络访问,首次加载时需要能够下载对应的
.mrs文件。
五、完整 JavaScript 覆写脚本
下面是完整脚本,可直接粘贴到 Clash Party 的 JavaScript 覆写中。
function main(config) { /* * ========================================================= * 一、基础设置 * ========================================================= */
config["mixed-port"] = 7890; config.ipv6 = true; config["allow-lan"] = true; config["unified-delay"] = false; config["tcp-concurrent"] = true; config["find-process-mode"] = "strict"; config["global-client-fingerprint"] = "chrome";
/* * ========================================================= * 二、配置保存 * ========================================================= */
config.profile = { ...(config.profile || {}), "store-selected": true, "store-fake-ip": true };
/* * ========================================================= * 三、流量嗅探 * ========================================================= */
config.sniffer = { enable: true, sniff: { HTTP: { ports: [80, "8080-8880"], "override-destination": true }, TLS: { ports: [443, 8443] }, QUIC: { ports: [443, 8443] } }, "skip-domain": [ "Mijia Cloud", "+.push.apple.com" ] };
/* * ========================================================= * 四、TUN 设置 * ========================================================= */
config.tun = { enable: true, stack: "mixed", "dns-hijack": [ "any:53", "tcp://any:53" ], "auto-route": true, "auto-redirect": true, "auto-detect-interface": true };
/* * ========================================================= * 五、DNS 设置 * ========================================================= */
config.dns = { enable: true, ipv6: true, "enhanced-mode": "fake-ip",
"fake-ip-filter": [ "*", "+.lan", "+.local", "+.market.xiaomi.com" ],
"default-nameserver": [ "tls://223.5.5.5", "tls://223.6.6.6" ],
nameserver: [ "https://doh.pub/dns-query", "https://dns.alidns.com/dns-query" ] };
/* * ========================================================= * 六、为住宅 SOCKS 节点添加 dialer-proxy * ========================================================= * * 匹配条件: * 1. 节点名称中含“住宅” * 2. 节点类型为 socks5 或 socks * * 添加后实际链路: * 电脑 → 机场入口 → 住宅 SOCKS → 目标网站 */
function addDialerProxy(proxyList) { if (!Array.isArray(proxyList)) { return; }
proxyList.forEach((proxy) => { if (!proxy || typeof proxy !== "object") { return; }
const name = String(proxy.name || ""); const type = String(proxy.type || "").toLowerCase();
const isResidential = name.includes("住宅"); const isSocks = type === "socks5" || type === "socks";
if (isResidential && isSocks) { proxy["dialer-proxy"] = "🛫 机场入口"; } }); }
// 处理订阅配置中直接存在的节点 addDialerProxy(config.proxies);
// 兼容少数使用内联 payload 的代理提供者 if ( config["proxy-providers"] && typeof config["proxy-providers"] === "object" ) { Object.values(config["proxy-providers"]).forEach((provider) => { if (provider && Array.isArray(provider.payload)) { addDialerProxy(provider.payload); } }); }
/* * ========================================================= * 七、代理策略组 * ========================================================= */
config["proxy-groups"] = [ /* * 总代理组 * * 选择“🧦 SOCKS落地”时启用链式代理。 * 也保留全部普通节点,可以临时使用单节点。 */ { name: "🚀 Proxy", type: "select", proxies: [ "🧦 SOCKS落地" ], "include-all": true, "exclude-type": "direct" }, /* * 第一跳:机场入口 * * 按你的要求显示所有实际节点。 * 这里也会显示名称含“住宅”的节点, * 但实际使用时不要在机场入口中选择住宅节点。 */ { name: "🛫 机场入口", type: "select", "include-all": true, "exclude-type": "direct" },
/* * 第二跳:住宅 SOCKS 落地 */ { name: "🧦 SOCKS落地", type: "select", "include-all": true, "exclude-type": "direct", filter: "住宅" },
{ name: "🤖 AI分流", type: "select", proxies: [ "🚀 Proxy", "🧦 SOCKS落地", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区" ], "include-all": true, "exclude-type": "direct" },
{ name: "🤖 OpenAI", type: "select", proxies: [ "🤖 AI分流", "🚀 Proxy", "🧦 SOCKS落地", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区" ] },
{ name: "✨ Claude", type: "select", proxies: [ "🤖 AI分流", "🚀 Proxy", "🧦 SOCKS落地", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区" ] },
{ name: "💎 Gemini", type: "select", proxies: [ "🤖 AI分流", "🚀 Proxy", "🧦 SOCKS落地", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区" ] },
{ name: "🪟 Copilot", type: "select", proxies: [ "🤖 AI分流", "🚀 Proxy", "🧦 SOCKS落地", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区" ] },
{ name: "🔎 Google", type: "select", proxies: [ "🚀 Proxy", "🧦 SOCKS落地", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区", "DIRECT" ] },
{ name: "🐙 GitHub", type: "select", proxies: [ "🚀 Proxy", "🧦 SOCKS落地", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区", "DIRECT" ] },
{ name: "🪟 微软服务", type: "select", proxies: [ "🚀 Proxy", "🧦 SOCKS落地", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区", "DIRECT" ] },
{ name: "🍎 苹果服务", type: "select", proxies: [ "🚀 Proxy", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区", "DIRECT" ] },
{ name: "✈️ Telegram", type: "select", proxies: [ "🚀 Proxy", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区", "DIRECT" ] },
{ name: "🐦 Twitter", type: "select", proxies: [ "🚀 Proxy", "🧦 SOCKS落地", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区", "DIRECT" ] },
{ name: "🎵 TikTok", type: "select", proxies: [ "🚀 Proxy", "🧦 SOCKS落地", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区", "DIRECT" ] },
{ name: "📺 YouTube", type: "select", proxies: [ "🚀 Proxy", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区", "DIRECT" ] },
{ name: "🎬 Netflix", type: "select", proxies: [ "🚀 Proxy", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区", "DIRECT" ] },
{ name: "🎧 Spotify", type: "select", proxies: [ "🚀 Proxy", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区", "DIRECT" ] },
{ name: "📹 哔哩哔哩", type: "select", proxies: [ "🚀 Proxy", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区", "DIRECT" ] },
{ name: "🦄 巴哈姆特", type: "select", proxies: [ "🚀 Proxy", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区", "DIRECT" ] },
{ name: "🌍 Global", type: "select", proxies: [ "🚀 Proxy", "🧦 SOCKS落地", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区", "DIRECT" ] },
{ name: "🏠 国内网站", type: "select", proxies: [ "DIRECT", "🚀 Proxy", "🇺🇸 美国", "🇭🇰 香港", "🇯🇵 日本", "🇸🇬 新加坡", "🇹🇼 台湾", "🌐 其它地区" ] },
/* * 地区筛选组 */
{ name: "🇭🇰 香港", type: "select", "include-all": true, "exclude-type": "direct", filter: "(?i)(香港|港|hk|hong kong|hongkong)" },
{ name: "🇺🇸 美国", type: "select", "include-all": true, "exclude-type": "direct", filter: "(?i)(美|波特兰|达拉斯|俄勒冈|凤凰城|费利蒙|硅谷|拉斯维加斯|洛杉矶|圣何塞|圣克拉拉|西雅图|芝加哥|us|united states|unitedstates)" },
{ name: "🇯🇵 日本", type: "select", "include-all": true, "exclude-type": "direct", filter: "(?i)(日本|川日|东京|大阪|泉日|埼玉|沪日|深日|jp|japan)" },
{ name: "🇸🇬 新加坡", type: "select", "include-all": true, "exclude-type": "direct", filter: "(?i)(新加坡|坡|狮城|sg|singapore)" },
{ name: "🇹🇼 台湾", type: "select", "include-all": true, "exclude-type": "direct", filter: "(?i)(台|tw|taiwan|tai)" },
{ name: "🌐 其它地区", type: "select", "include-all": true, "exclude-type": "direct", filter: "(?i)^(?!.*(?:美国|美|波特兰|达拉斯|俄勒冈|凤凰城|费利蒙|硅谷|拉斯维加斯|洛杉矶|圣何塞|圣克拉拉|西雅图|芝加哥|us|united states|unitedstates|香港|港|hk|hong kong|hongkong|日本|川日|东京|大阪|泉日|埼玉|沪日|深日|jp|japan|新加坡|坡|狮城|sg|singapore|台|tw|taiwan|tai)).*" } ];
/* * ========================================================= * 八、分流规则 * ========================================================= */
config.rules = [ "RULE-SET,private_ip,DIRECT,no-resolve",
"RULE-SET,openai_domain,🤖 OpenAI",
"DOMAIN-SUFFIX,claude.ai,✨ Claude", "DOMAIN-SUFFIX,anthropic.com,✨ Claude", "DOMAIN-SUFFIX,anthropicusercontent.com,✨ Claude",
"DOMAIN,gemini.google.com,💎 Gemini", "DOMAIN,aistudio.google.com,💎 Gemini", "DOMAIN,generativelanguage.googleapis.com,💎 Gemini",
"DOMAIN,copilot.microsoft.com,🪟 Copilot",
"RULE-SET,github_domain,🐙 GitHub", "RULE-SET,google_domain,🔎 Google", "RULE-SET,apple_domain,🍎 苹果服务", "RULE-SET,microsoft_domain,🪟 微软服务",
"RULE-SET,telegram_domain,✈️ Telegram", "RULE-SET,twitter_domain,🐦 Twitter", "RULE-SET,tiktok_domain,🎵 TikTok",
"RULE-SET,youtube_domain,📺 YouTube", "RULE-SET,netflix_domain,🎬 Netflix", "RULE-SET,spotify_domain,🎧 Spotify", "RULE-SET,bilibili_domain,📹 哔哩哔哩", "RULE-SET,bahamut_domain,🦄 巴哈姆特",
"RULE-SET,cn_domain,🏠 国内网站", "RULE-SET,geolocation-!cn,🌍 Global",
"RULE-SET,google_ip,🔎 Google", "RULE-SET,netflix_ip,🎬 Netflix", "RULE-SET,telegram_ip,✈️ Telegram", "RULE-SET,twitter_ip,🐦 Twitter", "RULE-SET,cn_ip,🏠 国内网站",
"MATCH,🚀 Proxy" ];
/* * ========================================================= * 九、规则集提供者 * ========================================================= */
const domainProvider = (url) => ({ type: "http", interval: 86400, behavior: "domain", format: "mrs", url });
const ipProvider = (url) => ({ type: "http", interval: 86400, behavior: "ipcidr", format: "mrs", url });
config["rule-providers"] = { openai_domain: domainProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/openai.mrs" ),
github_domain: domainProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/github.mrs" ),
google_domain: domainProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/google.mrs" ),
apple_domain: domainProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/apple.mrs" ),
microsoft_domain: domainProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/microsoft.mrs" ),
telegram_domain: domainProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/telegram.mrs" ),
twitter_domain: domainProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/twitter.mrs" ),
tiktok_domain: domainProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/tiktok.mrs" ),
youtube_domain: domainProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/youtube.mrs" ),
netflix_domain: domainProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/netflix.mrs" ),
spotify_domain: domainProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/spotify.mrs" ),
bilibili_domain: domainProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/bilibili.mrs" ),
bahamut_domain: domainProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/bahamut.mrs" ),
cn_domain: domainProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/cn.mrs" ),
"geolocation-!cn": domainProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/geolocation-!cn.mrs" ),
private_ip: ipProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/private.mrs" ),
cn_ip: ipProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/cn.mrs" ),
google_ip: ipProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/google.mrs" ),
netflix_ip: ipProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/netflix.mrs" ),
twitter_ip: ipProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/twitter.mrs" ),
telegram_ip: ipProvider( "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/telegram.mrs" ) };
/* * 必须返回处理后的配置 */ return config;}文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!