起初是不想用 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 国内外分流,粘贴即用


📌 转载信息
原作者:
mos6
转载时间:
2025/12/28 19:50:40