



// Clash Verge 全局扩展脚本
// 将此脚本复制到 Clash Verge -> 订阅 -> 全局扩展脚本
// ==================== 配置常量 ====================
// 代理组基础配置
const groupBaseOption = {
interval: 0,
timeout: 3000,
url: "https://www.google.com/generate_204",
lazy: true,
"max-failed-times": 3,
hidden: false,
};
// 图标 URL 基础路径
const iconBaseUrl = "https://fastly.jsdelivr.net/gh/clash-verge-rev/clash-verge-rev.github.io@main/docs/assets/icons";
// 落地节点排除过滤器(用于排除落地节点不参与自动选择)
const landingNodeExcludeFilter = "(?i)webshare";
// ==================== 主函数 ====================
function main(config) {
// 添加代理提供者
config["proxy-providers"] = getProxyProviders();
// 添加落地节点代理
config.proxies = getProxies();
// 配置 DNS
config.dns = getDnsConfig();
// 添加规则提供者
config["rule-providers"] = getRuleProviders();
// 添加规则
config.rules = getRules();
// 添加代理组
config["proxy-groups"] = getProxyGroups();
return config;
}
// ==================== 代理提供者配置 ====================
function getProxyProviders() {
return {
p1: {
type: "http",
url: "", // 请替换成你的订阅链接
interval: 86400,
proxy: "🔰 模式选择",
path: "./proxy_providers/p1.yaml",
"health-check": {
enable: false,
url: "http://www.gstatic.com/generate_204",
interval: 3600,
},
override: {
"additional-prefix": "p1 | ",
udp: true,
},
},
// --- 在这里添加其他订阅 ---
// p2: {
// type: "http",
// url: "YOUR_SECOND_SUBSCRIPTION_URL",
// interval: 86400,
// path: "./proxy_providers/p2.yaml",
// "health-check": {
// enable: true,
// url: "http://www.gstatic.com/generate_204",
// interval: 3600,
// },
// override: {
// "additional-prefix": "p2 | ",
// },
// },
};
}
// ==================== 落地节点配置 ====================
function getProxies() {
return [
// --- 机场节点 开始 (请替换成你自己的信息) ---
{
name: "", // 替换成你的机场节点起个名字
server: "", // 替换成你的机场节点IP或域名
port: , // 替换成你的机场节点端口
sni: "", // Server Name Indication(服务器名称指示),TLS 握手时发送的域名,用于伪装流量-SNI 伪装原理:将流量伪装成访问正常网站,防火墙看到的是你在访问一个普通 HTTPS 网站
up: "100 Mbps", // 上传带宽限制,告诉服务器你的上行速度
down: "200 Mbps", // 下载带宽限制,告诉服务器你的下行速度
"skip-cert-verify": true, // 跳过 TLS 证书验证,true 表示不验证证书(自签证书时需要)
type: "hysteria2", // 代理协议类型,这里是 Hysteria2 协议
password: "", // 认证密码,连接服务器时的验证凭证
},
// 落地节点
{
name: "", // 替换成你的落地节点起个名字
server: "", // 替换成你的落地节点IP或域名
port: , // 替换成你的落地节点端口
type: "", // 代理协议类型,这里是 SOCKS5 协议
username: "", // 替换成你的用户名
password: "", // 替换成你的密码
tls: false, // 是否启用 TLS 加密,false 表示不加密
"skip-cert-verify": true, // 跳过证书验证(TLS 关闭时此项无实际作用) true 表示:跳过证书验证
udp: true, // 是否支持 UDP 转发,true 表示支持
"dialer-proxy": "⚙️ 节点选择", // 链式代理,指定通过哪个代理组连接此节点
},
// --- 如果有更多落地节点,在这里继续添加 ---
];
}
// ==================== DNS 配置 ====================
function getDnsConfig() {
return {
enable: true,
listen: "0.0.0.0:1053",
"prefer-h3": false,
"respect-rules": true,
"use-system-hosts": false,
"cache-algorithm": "arc",
"enhanced-mode": "fake-ip",
"fake-ip-range": "198.18.0.1/16",
"fake-ip-filter": [
"+.lan",
"+.local",
"+.msftconnecttest.com",
"+.msftncsi.com",
"localhost.ptlogin2.qq.com",
"localhost.sec.qq.com",
"localhost.work.weixin.qq.com",
],
"default-nameserver": ["223.5.5.5", "1.2.4.8"],
nameserver: [
"https://cloudflare-dns.com/dns-query",
"https://77.88.8.8/dns-query",
"https://8.8.4.4/dns-query#ecs=1.1.1.1/24&ecs-override=true",
"https://208.67.222.222/dns-query#ecs=1.1.1.1/24&ecs-override=true",
],
"proxy-server-nameserver": [
"https://223.5.5.5/dns-query",
"https://doh.pub/dns-query",
],
"direct-nameserver": [
"https://223.5.5.5/dns-query",
"https://doh.pub/dns-query",
],
"direct-nameserver-follow-policy": false,
"nameserver-policy": {
"geosite:cn": [
"https://223.5.5.5/dns-query",
"https://doh.pub/dns-query",
],
},
};
}
// ==================== 规则提供者配置 ====================
function getRuleProviders() {
const loyalsoldierBase = "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release";
const metaCubeXBase = "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/refs/heads/meta/geo/geosite/classical";
return {
// Loyalsoldier 规则集
reject: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "domain",
url: `${loyalsoldierBase}/reject.txt`,
path: "./ruleset/loyalsoldier/reject.yaml",
},
icloud: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "domain",
url: `${loyalsoldierBase}/icloud.txt`,
path: "./ruleset/loyalsoldier/icloud.yaml",
},
apple: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "domain",
url: `${loyalsoldierBase}/apple.txt`,
path: "./ruleset/loyalsoldier/apple.yaml",
},
google: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "domain",
url: `${loyalsoldierBase}/google.txt`,
path: "./ruleset/loyalsoldier/google.yaml",
},
proxy: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "domain",
url: `${loyalsoldierBase}/proxy.txt`,
path: "./ruleset/loyalsoldier/proxy.yaml",
},
direct: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "domain",
url: `${loyalsoldierBase}/direct.txt`,
path: "./ruleset/loyalsoldier/direct.yaml",
},
private: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "domain",
url: `${loyalsoldierBase}/private.txt`,
path: "./ruleset/loyalsoldier/private.yaml",
},
gfw: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "domain",
url: `${loyalsoldierBase}/gfw.txt`,
path: "./ruleset/loyalsoldier/gfw.yaml",
},
"tld-not-cn": {
type: "http",
format: "yaml",
interval: 86400,
behavior: "domain",
url: `${loyalsoldierBase}/tld-not-cn.txt`,
path: "./ruleset/loyalsoldier/tld-not-cn.yaml",
},
telegramcidr: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "ipcidr",
url: `${loyalsoldierBase}/telegramcidr.txt`,
path: "./ruleset/loyalsoldier/telegramcidr.yaml",
},
cncidr: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "ipcidr",
url: `${loyalsoldierBase}/cncidr.txt`,
path: "./ruleset/loyalsoldier/cncidr.yaml",
},
lancidr: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "ipcidr",
url: `${loyalsoldierBase}/lancidr.txt`,
path: "./ruleset/loyalsoldier/lancidr.yaml",
},
applications: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "classical",
url: `${loyalsoldierBase}/applications.txt`,
path: "./ruleset/loyalsoldier/applications.yaml",
},
// MetaCubeX 规则集
openai: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "classical",
url: `${metaCubeXBase}/openai.yaml`,
path: "./ruleset/MetaCubeX/openai.yaml",
},
bybit: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "classical",
url: `${metaCubeXBase}/bybit.yaml`,
path: "./ruleset/MetaCubeX/bybit.yaml",
},
pikpak: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "classical",
url: `${metaCubeXBase}/pikpak.yaml`,
path: "./ruleset/MetaCubeX/pikpak.yaml",
},
anthropic: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "classical",
url: `${metaCubeXBase}/anthropic.yaml`,
path: "./ruleset/MetaCubeX/anthropic.yaml",
},
"google-gemini": {
type: "http",
format: "yaml",
interval: 86400,
behavior: "classical",
url: `${metaCubeXBase}/google-gemini.yaml`,
path: "./ruleset/MetaCubeX/google-gemini.yaml",
},
xai: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "classical",
url: `${metaCubeXBase}/xai.yaml`,
path: "./ruleset/MetaCubeX/xai.yaml",
},
perplexity: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "classical",
url: `${metaCubeXBase}/perplexity.yaml`,
path: "./ruleset/MetaCubeX/perplexity.yaml",
},
microsoft: {
type: "http",
format: "yaml",
interval: 86400,
behavior: "classical",
url: `${metaCubeXBase}/microsoft.yaml`,
path: "./ruleset/MetaCubeX/microsoft.yaml",
},
};
}
// ==================== 规则配置 ====================
function getRules() {
return [
// 额外自定义规则
"PROCESS-NAME,steam.exe,🐬 自定义直连",
"DOMAIN-SUFFIX,immersivetranslate.com,🐳 自定义代理",
// 自定义规则
"DOMAIN-SUFFIX,googleapis.cn,🔰 模式选择",
"DOMAIN-SUFFIX,gstatic.com,🔰 模式选择",
"DOMAIN-SUFFIX,xn--ngstr-lra8j.com,🔰 模式选择",
"DOMAIN-SUFFIX,github.io,🔰 模式选择",
"DOMAIN,v2rayse.com,🔰 模式选择",
// MetaCubeX 规则集
"RULE-SET,openai,💸 ChatGPT-Gemini-XAI-Perplexity",
"RULE-SET,pikpak,🅿️ PikPak",
"RULE-SET,bybit,🪙 Bybit",
"RULE-SET,anthropic,💵 Claude",
"RULE-SET,google-gemini,💸 ChatGPT-Gemini-XAI-Perplexity",
"RULE-SET,xai,💸 ChatGPT-Gemini-XAI-Perplexity",
"RULE-SET,perplexity,💸 ChatGPT-Gemini-XAI-Perplexity",
// Loyalsoldier 规则集
"RULE-SET,applications,🔗 全局直连",
"RULE-SET,private,🔗 全局直连",
"RULE-SET,reject,🥰 广告过滤",
"RULE-SET,microsoft,Ⓜ️ 微软服务",
"RULE-SET,icloud,🍎 苹果服务",
"RULE-SET,apple,🍎 苹果服务",
"RULE-SET,google,📢 谷歌服务",
"RULE-SET,proxy,🔰 模式选择",
"RULE-SET,gfw,🔰 模式选择",
"RULE-SET,tld-not-cn,🔰 模式选择",
"RULE-SET,direct,🔗 全局直连",
"RULE-SET,lancidr,🔗 全局直连,no-resolve",
"RULE-SET,cncidr,🔗 全局直连,no-resolve",
"RULE-SET,telegramcidr,📲 电报消息,no-resolve",
// 其他规则
"GEOIP,LAN,🔗 全局直连,no-resolve",
"GEOIP,CN,🔗 全局直连,no-resolve",
"MATCH,🐟 漏网之鱼",
];
}
// ==================== 代理组配置 ====================
function getProxyGroups() {
// 代理提供者列表
const providersList = ["p1"]; // 如果有 p2,添加到这里: ["p1", "p2"]
// 落地节点列表
const landingNodes = [""]; // 替换你的第2个节点
// 基础代理组选项
const baseProxies = [
"🔰 模式选择",
"⚙️ 节点选择",
"🕊️ 落地节点",
"♻️ 延迟选优",
"🚑 故障转移",
"⚖️ 负载均衡(散列)",
"☁️ 负载均衡(轮询)",
"🔗 全局直连",
];
return [
// 模式选择
{
...groupBaseOption,
name: "🔰 模式选择",
type: "select",
proxies: ["⚙️ 节点选择", "🕊️ 落地节点", "🔗 全局直连"],
icon: `${iconBaseUrl}/adjust.svg`,
},
// 节点选择
{
...groupBaseOption,
name: "⚙️ 节点选择",
type: "select",
proxies: [
"♻️ 延迟选优",
"🚑 故障转移",
"⚖️ 负载均衡(散列)",
"☁️ 负载均衡(轮询)",
"", // 替换你的第1个节点
],
"exclude-filter": landingNodeExcludeFilter,
icon: `${iconBaseUrl}/adjust.svg`,
},
// 落地节点
{
...groupBaseOption,
name: "🕊️ 落地节点",
type: "select",
proxies: landingNodes,
icon: `${iconBaseUrl}/openwrt.svg`,
},
// 延迟选优
{
...groupBaseOption,
name: "♻️ 延迟选优",
type: "url-test",
tolerance: 50,
use: providersList,
"exclude-filter": landingNodeExcludeFilter,
icon: `${iconBaseUrl}/speed.svg`,
},
// 故障转移
{
...groupBaseOption,
name: "🚑 故障转移",
type: "fallback",
use: providersList,
icon: `${iconBaseUrl}/ambulance.svg`,
},
// 负载均衡(散列)
{
...groupBaseOption,
name: "⚖️ 负载均衡(散列)",
type: "load-balance",
strategy: "consistent-hashing",
use: providersList,
"exclude-filter": landingNodeExcludeFilter,
icon: `${iconBaseUrl}/merry_go.svg`,
},
// 负载均衡(轮询)
{
...groupBaseOption,
name: "☁️ 负载均衡(轮询)",
type: "load-balance",
strategy: "round-robin",
use: providersList,
"exclude-filter": landingNodeExcludeFilter,
icon: `${iconBaseUrl}/balance.svg`,
},
// 国外媒体
{
...groupBaseOption,
name: "🌍 国外媒体",
type: "select",
proxies: baseProxies,
use: providersList,
icon: `${iconBaseUrl}/youtube.svg`,
},
// ChatGPT-Gemini-XAI-Perplexity
{
...groupBaseOption,
name: "💸 ChatGPT-Gemini-XAI-Perplexity",
type: "select",
proxies: [
"🔰 模式选择",
"⚙️ 节点选择",
"🕊️ 落地节点",
"🔗 全局直连",
"♻️ 延迟选优",
"🚑 故障转移",
"⚖️ 负载均衡(散列)",
"☁️ 负载均衡(轮询)",
],
use: providersList,
"exclude-filter": "(?i)港|hk|hongkong|hong kong|俄|ru|russia|澳|macao",
icon: `${iconBaseUrl}/chatgpt.svg`,
},
// Claude
{
...groupBaseOption,
name: "💵 Claude",
type: "select",
proxies: baseProxies,
use: providersList,
icon: `${iconBaseUrl}/claude.svg`,
},
// Bybit
{
...groupBaseOption,
name: "🪙 Bybit",
type: "select",
proxies: baseProxies,
use: providersList,
icon: `${iconBaseUrl}/link.svg`,
},
// PikPak
{
...groupBaseOption,
name: "🅿️ PikPak",
type: "select",
proxies: baseProxies,
use: providersList,
icon: `${iconBaseUrl}/link.svg`,
},
// 电报消息
{
...groupBaseOption,
name: "📲 电报消息",
type: "select",
proxies: baseProxies,
use: providersList,
icon: `${iconBaseUrl}/telegram.svg`,
},
// 谷歌服务
{
...groupBaseOption,
name: "📢 谷歌服务",
type: "select",
proxies: baseProxies,
use: providersList,
icon: `${iconBaseUrl}/google.svg`,
},
// 苹果服务
{
...groupBaseOption,
name: "🍎 苹果服务",
type: "select",
proxies: baseProxies,
use: providersList,
icon: `${iconBaseUrl}/apple.svg`,
},
// 微软服务
{
...groupBaseOption,
name: "Ⓜ️ 微软服务",
type: "select",
proxies: [
"🔰 模式选择",
"⚙️ 节点选择",
"🕊️ 落地节点",
"🔗 全局直连",
"♻️ 延迟选优",
"🚑 故障转移",
"⚖️ 负载均衡(散列)",
"☁️ 负载均衡(轮询)",
],
use: providersList,
icon: `${iconBaseUrl}/microsoft.svg`,
},
// 广告过滤
{
...groupBaseOption,
name: "🥰 广告过滤",
type: "select",
proxies: ["REJECT", "DIRECT"],
icon: `${iconBaseUrl}/bug.svg`,
},
// 全局直连
{
...groupBaseOption,
name: "🔗 全局直连",
type: "select",
proxies: [
"DIRECT",
"⚙️ 节点选择",
"♻️ 延迟选优",
"🚑 故障转移",
"⚖️ 负载均衡(散列)",
"☁️ 负载均衡(轮询)",
],
icon: `${iconBaseUrl}/link.svg`,
},
// 全局拦截
{
...groupBaseOption,
name: "❌ 全局拦截",
type: "select",
proxies: ["REJECT", "DIRECT"],
icon: `${iconBaseUrl}/block.svg`,
},
// 自定义直连
{
...groupBaseOption,
name: "🐬 自定义直连",
type: "select",
proxies: [
"🔗 全局直连",
"🔰 模式选择",
"⚙️ 节点选择",
"♻️ 延迟选优",
"🚑 故障转移",
"⚖️ 负载均衡(散列)",
"☁️ 负载均衡(轮询)",
],
icon: `${iconBaseUrl}/unknown.svg`,
},
// 自定义代理
{
...groupBaseOption,
name: "🐳 自定义代理",
type: "select",
proxies: baseProxies,
use: providersList,
icon: `${iconBaseUrl}/openwrt.svg`,
},
// 漏网之鱼
{
...groupBaseOption,
name: "🐟 漏网之鱼",
type: "select",
proxies: baseProxies,
use: providersList,
icon: `${iconBaseUrl}/fish.svg`,
},
];
}
📌 转载信息
原作者:
fyhyxp4
转载时间:
2026/1/15 10:18:13