自用 clash verge 的全局扩展脚本 - 支持谷歌固定地区 + 屏蔽无意义节点
起初是不想用 TUN 模式的,怕代理了下载流量和游戏流量。
为了认证咕噜咕噜学生会员和反重力,就开始折腾一下(结果因为以前用 Adsense 加了国内地址导致学生会员没资格,然后反重力也改成周刷新额度了,555)
本脚本解决了以下问题:
- 锁定谷歌的地区为新加坡(你也可以自己改地区,或者加规则实现其他网站固定地区)
- 把到期时间、剩余流量等没意义的节点单独丢一个分组,不参与自动选择
- TUN 模式下,非必要代理的流量尽可能走直连(测试了游戏没问题)
- 原理是解析 IP 如果是国内就走直连,但是不知道如果分发 CND 是亚洲 IP 能不能命中该规则
- 有没有佬帮测一下 steam 下载这类流量比较大且使用场景比较多的情况
- TUN 模式下反重力正常工作
然后我想再问个问题:
开了 TUN 之后,有些支持配置代理的软件,还需要再选择系统代理吗,或者是直接不开代理也行?因为我看 TUN 模式需要关闭系统代理,然后软件不配置代理的话好像也能走代理
脚本:
// 自定义域名配置
const forceProxyDomains = [
"DOMAIN-SUFFIX,linux.do,常规节点组",
"DOMAIN-SUFFIX,genspark.ai,常规节点组"
]
// 自定义规则集配置
// 规则集仓库 https://github.com/blackmatrix7/ios_rule_script/blob/master/rule/Clash/README.md
const ruleConfig = [
{
name: "谷歌规则集",
group: "地区节点组",
url: "https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/Google/Google.yaml"
},
{
name: "油管规则集",
group: "地区节点组",
url: "https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/YouTube/YouTube.yaml"
}
]
function main(config) {
const newConfig = JSON.parse(JSON.stringify(config));
// 特殊节点组:无用的节点(官网地址、到期时间等)
const premiumKeywords = /(免费|2026|官网|剩余|到期|Traffic)/i;
let specialProxies = newConfig.proxies.filter(p => premiumKeywords.test(p.name));
let normalProxies = newConfig.proxies.filter(p => !premiumKeywords.test(p.name));
// 地区节点组:固定新加坡,没有则降级到常规节点组
const areaKeywords = /(singapore|新加坡)/i;
let areaProxies = newConfig.proxies.filter(p => areaKeywords.test(p.name));
if(areaProxies.length <= 0) {
areaProxies = normalProxies;
}
// 构建代理组
const proxyGroups = [
{
"name": "代理分流组",
"type": "select",
"proxies": specialProxies.length > 0 ? ["常规节点组", "特殊节点组", "DIRECT"] : ["常规节点组", "DIRECT"]
},
{
"name": "常规节点组",
"type": "url-test",
"url": "http://www.google.com/generate_204",
"interval": 1800,
"tolerance": 30,
"proxies": normalProxies.map(p => p.name)
},
...(specialProxies.length > 0 ? [
{
"name": "特殊节点组",
"type": "select",
"proxies": specialProxies.map(p => p.name)
}] : []
),
{
"name": "地区节点组",
"type": "select",
"proxies": areaProxies.map(p => p.name)
},
{
"name": "国内直连组",
"type": "select",
"proxies": ["DIRECT"]
}
];
// 规则配置
const rules = [];
// 添加自定义域名
forceProxyDomains.forEach(domain => {
rules.push(domain);
});
// 添加自定义规则集
const ruleProviders = {};
ruleConfig.forEach(({ name, url, group }) => {
const providerKey = `${name.toLowerCase()}_rules`;
ruleProviders[providerKey] = {
"type": "http",
"behavior": "classical",
"url": url,
"interval": 86400,
"path": `./rule-providers/${providerKey}.yaml`
};
rules.push(`RULE-SET,${providerKey},${group}`);
});
// 全局配置
const globalConfig = {
"global-client-fingerprint": "chrome",
"tcp-concurrent": true,
"geox-url": {
"geoip": "https://ghfast.top/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.dat",
"geosite": "https://ghfast.top/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat",
"mmdb": "https://ghfast.top/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country-lite.mmdb"
}
};
// GEO规则
rules.push(
// 确定被墙 → 代理
"GEOSITE,gfw,代理分流组",
// 中国相关 → 直连
"GEOSITE,cn,国内直连组",
"GEOSITE,private,国内直连组",
"GEOIP,private,国内直连组,no-resolve",
"GEOIP,cn,国内直连组",
// 兜底 → 代理
"MATCH,代理分流组"
);
return {
...newConfig,
...globalConfig,
"proxy-groups": proxyGroups,
"rules": rules,
"rule-providers": ruleProviders
};
}
没写 DNS 的规则,有需要可以参考之前的帖子傻瓜式 clash verge 全局脚本,实现 DNS 国内外分流,粘贴即用

评论区(暂无评论)