【科学上网】在Clash Verge中达成Clash for Windows的Parsers功能

富强  ·  2023-12-23

写在前面

在Clash for Windows删库跑路后,Clash Verge成为了大众的主流选择(不代表Clash for Windows不能用了,只是没有后续更新而已)。我在转到这个软件后,发现它居然没有Parsers功能,这让我感到十分遗憾。

于是我找到了一个解决方案,通过Clash Verge的配置文件,将类似Parsers功能添加到Clash Verge中。

更新于2025.7.16:目前Clash Verge已经停更,Clash Verge Rev已成为接任者,现更新为支持CVR的配置(根据官方示例所改)

配置文件

// 本脚本根据您提供的订阅转换配置生成
// 保留了优秀的DNS配置,并完整复刻了您的分组和规则逻辑
// 规则集通用配置
const ruleProviderCommon = {
  "type": "http",
  "interval": 43200, // 每天自动更新一次
  "format": "text"
};

// 您的在线规则集列表
const ruleProviders = {
  "stream": {
    ...ruleProviderCommon,
    "behavior": "classical",
    "url": "https://ruleset.skk.moe/Clash/non_ip/stream.txt",
    "path": "./ruleset/skk/stream.txt"
  },
  "telegram_domain": {
    ...ruleProviderCommon,
    "behavior": "classical",
    "url": "https://ruleset.skk.moe/Clash/non_ip/telegram.txt",
    "path": "./ruleset/skk/telegram_domain.txt"
  },
  "telegram_ip": {
    ...ruleProviderCommon,
    "behavior": "classical",
    "url": "https://ruleset.skk.moe/Clash/ip/telegram.txt",
    "path": "./ruleset/skk/telegram_ip.txt"
  },
  "global": {
    ...ruleProviderCommon,
    "behavior": "classical",
    "url": "https://ruleset.skk.moe/Clash/non_ip/global.txt",
    "path": "./ruleset/skk/global.txt"
  },
  "direct": {
    ...ruleProviderCommon,
    "behavior": "classical",
    "url": "https://ruleset.skk.moe/Clash/non_ip/direct.txt",
    "path": "./ruleset/skk/direct.txt"
  },
  "domestic": {
    ...ruleProviderCommon,
    "behavior": "classical",
    "url": "https://ruleset.skk.moe/Clash/non_ip/domestic.txt",
    "path": "./ruleset/skk/domestic.txt"
  },
  "lan_domain": {
    ...ruleProviderCommon,
    "behavior": "classical",
    "url": "https://ruleset.skk.moe/Clash/non_ip/lan.txt",
    "path": "./ruleset/skk/lan_domain.txt"
  },
  "lan_ip": {
    ...ruleProviderCommon,
    "behavior": "classical",
    "url": "https://ruleset.skk.moe/Clash/ip/lan.txt",
    "path": "./ruleset/skk/lan_ip.txt"
  }
};

// Part 3: 规则 (对应您的 ruleset=...DOMAIN... 等部分)
// 规则顺序非常重要,它决定了流量匹配的优先级
const rules = [
  // --- 应用净化 (广告、追踪、PCDN等) ---
  "DOMAIN-SUFFIX,adobe.io,应用净化",
  "DOMAIN-SUFFIX,adobestats.io,应用净化",
  "DOMAIN,prod.adobegenuine.com,应用净化",
  "DOMAIN,uf0onoepoe.adobestats.io,应用净化",
  "DOMAIN-SUFFIX,otheve.beacon.qq.com,应用净化",
  "DOMAIN-SUFFIX,tpstelemetry.tencent.com,应用净化",
  "DOMAIN-SUFFIX,h.trace.qq.com,应用净化",
  "DOMAIN-SUFFIX,report.gamecenter.qq.com,应用净化",
  "DOMAIN-SUFFIX,gjfzpt.cn,应用净化",
  "DOMAIN-SUFFIX,szbdyd.com,应用净化",
  "DOMAIN-SUFFIX,bsccdn.net,应用净化",
  "DOMAIN-SUFFIX,pkoplink.com,应用净化",
  "DOMAIN-SUFFIX,saxysec.com,应用净化",
  "DOMAIN-SUFFIX,uhabo.com,应用净化",
  "DOMAIN-SUFFIX,xycdn.com,应用净化",
  "DOMAIN-SUFFIX,kuiniuca.com,应用净化",
  "DOMAIN-SUFFIX,onethingpcs.com,应用净化",
  "DOMAIN-SUFFIX,jomodns.cn,应用净化",
  "DOMAIN-SUFFIX,p2p.huya.com,应用净化",
  "DOMAIN,stun.douyucdn.cn,应用净化",
  "DOMAIN,stun.hitv.com,应用净化",
  "DOMAIN,stun1.douyucdn.cn,应用净化",
  "DOMAIN-SUFFIX,mcdn.bilivideo.cn,应用净化",
  "DOMAIN-SUFFIX,tpa-hcdn.iqiyi.com,应用净化",
  "DOMAIN-SUFFIX,pcdn.xmcdn.com,应用净化",
  "DOMAIN-REGEX,.*pcdn.*biliapi\\.net,应用净化",
  "DOMAIN-REGEX,.*pcdn.*youku\\.com,应用净化",
  "DOMAIN-REGEX,.*p2p.*douyucdn\\.cn,应用净化",
  "DOMAIN-REGEX,.*p2p.*qq\\.com,应用净化",
  "DOMAIN,pcdn.yximgs.com,应用净化",

  // --- 电报消息 ---
  "RULE-SET,telegram_domain,电报消息",
  "RULE-SET,telegram_ip,电报消息,no-resolve",

  // --- 国外媒体 (包含您的Emby规则) ---
  "RULE-SET,stream,国外媒体",
  "DOMAIN-SUFFIX,embyplus.org,国外媒体",
  "DOMAIN-SUFFIX,pilipili.club,国外媒体",
  "DOMAIN-SUFFIX,pilipiliultra.com,国外媒体",
  "DOMAIN-SUFFIX,emby.wtf,国外媒体",
  "DOMAIN-SUFFIX,gd.9521732.xyz,国外媒体",

  // --- 国内直连 ---
  "RULE-SET,direct,国内直连",
  "RULE-SET,domestic,国内直连",
  "RULE-SET,lan_domain,国内直连",
  "RULE-SET,lan_ip,国内直连,no-resolve",
  "DOMAIN-SUFFIX,baomitu.com,国内直连",
  "DOMAIN-SUFFIX,ghimg.com,国内直连",
  "DOMAIN-SUFFIX,chinagwy.org,国内直连",
  "DOMAIN-SUFFIX,gov.cn,国内直连",
  "DOMAIN-SUFFIX,pc.wiki,国内直连",
  "DOMAIN-KEYWORD,monknow,国内直连",
  "DOMAIN-SUFFIX,winos.me,国内直连",
  "DOMAIN-SUFFIX,xiuxitong.com,国内直连",
  "DOMAIN-SUFFIX,aic4d.com,国内直连",
  "DOMAIN-SUFFIX,deepseek.com,国内直连",
  "DOMAIN-SUFFIX,tmp.link,国内直连",
  "DOMAIN-SUFFIX,vxtrans.com,国内直连",
  "DOMAIN-SUFFIX,vx-cdn.com,国内直连",
  "DOMAIN-SUFFIX,ttttt.link,国内直连",
  "DOMAIN-SUFFIX,makima.online,国内直连",
  "DOMAIN-SUFFIX,as174.de,国内直连",
  "DOMAIN-SUFFIX,micu.hk,国内直连",
  "DOMAIN-SUFFIX,nekoss.cn,国内直连",
  "DOMAIN-SUFFIX,zzidc.com,国内直连",

  // --- 全球代理 ---
  "RULE-SET,global,全球代理",

  // --- GEOIP规则 ---
  "GEOIP,CN,国内直连",

  // --- 漏网之鱼 (最终规则) ---
  "MATCH,漏网之鱼"
];

// 程序入口
function main(config) {
  // 检查配置中是否存在代理节点
  const proxyCount = config?.proxies?.length ?? 0;
  const proxyProviderCount =
    typeof config?.["proxy-providers"] === "object" ? Object.keys(config["proxy-providers"]).length : 0;
  if (proxyCount === 0 && proxyProviderCount === 0) {
    throw new Error("配置文件中未找到任何代理");
  }

  // Part 4: 代理组 (对应您的 custom_proxy_group 部分)
  config["proxy-groups"] = [
    {
      "name": "全球代理",
      "type": "url-test",
      "include-all": true, // 对应您配置中的 .* (包含所有节点)
      "url": "https://www.gstatic.com/generate_204",
      "interval": 300,
      "tolerance": 5,
      "lazy": true,
      "icon": "https://www.clashverge.dev/assets/icons/adjust.svg"
    },
    {
      "name": "国外媒体",
      "type": "url-test",
      "proxies": ["全球代理"], // 从“全球代理”这个组中筛选
      "include-all": true,
      "filter": "(?i)港|HK|Hong Kong", // 对应您配置中的 (港|HK|Hong Kong) 筛选
      "url": "https://www.gstatic.com/generate_204",
      "interval": 300,
      "tolerance": 5,
      "lazy": true,
      "icon": "https://www.clashverge.dev/assets/icons/youtube.svg"
    },
    {
      "name": "AI应用",
      "type": "url-test",
      "proxies": ["全球代理"],
      "include-all": true,
      "filter": "(?i)美|US|洛杉矶|United States|UnitedStates|🇺🇸",
      "url": "https://www.gstatic.com/generate_204",
      "interval": 300,
      "tolerance": 5,
      "lazy": true,
      "icon": "https://www.clashverge.dev/assets/icons/chatgpt.svg"
    },
    {
      "name": "电报消息",
      "type": "url-test",
      "proxies": ["全球代理"], // 从“全球代理”这个组中筛选
      "include-all": true,
      "filter": "(?i)新|坡|SG|Singapore|SGP|🇸🇬", // 对应您配置中的 (新|坡|SG|Singapore|SGP) 筛选
      "url": "https://www.gstatic.com/generate_204",
      "interval": 300,
      "tolerance": 5,
      "lazy": true,
      "icon": "https://www.clashverge.dev/assets/icons/telegram.svg"
    },
    {
      "name": "应用净化",
      "type": "select",
      "proxies": ["REJECT", "DIRECT"], // REJECT是拒绝连接,DIRECT是直连
      "icon": "https://www.clashverge.dev/assets/icons/guard.svg"
    },
    {
      "name": "国内直连",
      "type": "select",
      "proxies": ["DIRECT", "全球代理"], // 优先直连,提供代理作为备用选项
      "icon": "https://www.clashverge.dev/assets/icons/link.svg"
    },
    {
      "name": "漏网之鱼",
      "type": "select",
      "proxies": ["全球代理", "国内直连"],
      "icon": "https://www.clashverge.dev/assets/icons/fish.svg"
    }
  ];

  // 覆盖原配置中的 DNS、规则集 和 规则
  config["rule-providers"] = ruleProviders;
  config["rules"] = rules;

  // 返回修改后的配置
  return config;
}
 
评论
猫猫博客. All Rights Reserved. Theme Jasmine by Kent Liao.