Last active
June 4, 2025 02:50
-
-
Save 1oo1/ec0d802f014f568c3f98f3aac3e9e001 to your computer and use it in GitHub Desktop.
自用 ClashVergeRev脚本
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // https://clash-verge-rev.github.io/guide/script.html?h=rule+provider#1 | |
| // https://wiki.metacubex.one/config/ | |
| // 国内DNS服务器 | |
| const domesticNameservers = [ | |
| "https://dns.alidns.com/dns-query", // 阿里云公共DNS | |
| "https://doh.pub/dns-query", // 腾讯DNSPod | |
| ]; | |
| // 国外DNS服务器 | |
| const foreignNameservers = [ | |
| "https://dq.buai.work/d-q", // Cloudflare | |
| ]; | |
| // DNS配置 | |
| const dnsConfig = { | |
| "enable": true, | |
| "listen": "0.0.0.0:53", | |
| "ipv6": false, | |
| // 这些 名称服务器(nameservers) 用于解析下列 DNS 名称服务器主机名. | |
| // 仅指定 IP 地址 | |
| "default-nameserver": ["114.114.114.114", "223.5.5.5", "223.6.6.6"], | |
| // 支持 UDP、TCP、DoT、DoH. 您可以指定要连接的端口. | |
| // 所有 DNS 查询都直接发送到名称服务器, 无需代理 | |
| // Clash 使用第一个收到的响应作为 DNS 查询的结果. | |
| "nameserver": [...domesticNameservers, ...foreignNameservers, "dhcp://en0"], | |
| // 是否回应配置中的 hosts,默认 true | |
| "use-hosts": true, | |
| // 是否查询系统 hosts,默认 true | |
| "use-system-hosts": true, | |
| "cache-algorithm": "lru", | |
| "enhanced-mode": "fake-ip", | |
| "fake-ip-range": "198.18.0.1/16", | |
| // 此列表中的主机名将不会使用 Fake IP 解析 | |
| // 即, 对这些域名的请求将始终使用其真实 IP 地址进行响应 | |
| "fake-ip-filter": [ | |
| // 本地主机/设备 | |
| "+.lan", | |
| "+.local", | |
| // Windows网络出现小地球图标 | |
| "+.msftconnecttest.com", | |
| "+.msftncsi.com", | |
| // QQ快速登录检测失败 | |
| "localhost.ptlogin2.qq.com", | |
| "localhost.sec.qq.com", | |
| // 微信快速登录检测失败 | |
| "localhost.work.weixin.qq.com", | |
| // 钉钉 | |
| "*.taobao.com", | |
| "*.dingtalk.com", | |
| "*.dingtalkapps.com" | |
| ], | |
| // 当 `fallback` 存在时, DNS 服务器将向此部分中的服务器 | |
| // 与 `nameservers` 中的服务器发送并发请求 | |
| // 当 GEOIP 国家不是 `CN` 时, 将使用 fallback 服务器的响应 | |
| "fallback": [...foreignNameservers], | |
| // dns 连接遵守路由规则(rule 里的路由),需配置 proxy-server-nameserver. | |
| // 强烈不建议和 prefer-h3 一起使用 | |
| "respect-rules": true, | |
| // 代理节点域名解析服务器,仅用于解析代理节点的域名,如果不填则遵循 nameserver-policy、nameserver 和 fallback 的配置 | |
| "proxy-server-nameserver": [...foreignNameservers], | |
| // 后备域名解析服务器筛选,满足条件的将使用 fallback结果或只使用 fallback解析 | |
| "fallback-filter": { | |
| "geoip": true, | |
| "geoip-code": "CN", | |
| "ipcidr": ["240.0.0.0/4"], | |
| "domain": [ | |
| "+.google.com", | |
| "+.facebook.com", | |
| "+.youtube.com", | |
| "+.twitter.com", | |
| "+.x.com", | |
| "+.instagram.com", | |
| "+.whatsapp.com", | |
| "+.telegram.org", | |
| "+.t.me", | |
| "+.tiktok.com", | |
| "+.githubusercontent.com", | |
| "+.github.com", | |
| ] | |
| }, | |
| "nameserver-policy": { | |
| "geosite:private,cn,geolocation-cn": domesticNameservers, | |
| "geosite:google,youtube,telegram,gfw,geolocation-!cn": foreignNameservers | |
| } | |
| }; | |
| // 规则集通用配置 | |
| const ruleProviderCommon = { | |
| "type": "http", | |
| "format": "yaml", | |
| "interval": 86400 | |
| }; | |
| // 规则集配置 | |
| const ruleProviders = { | |
| "direct": { | |
| ...ruleProviderCommon, | |
| "behavior": "domain", | |
| "url": "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt", | |
| "path": "./ruleset/loyalsoldier/direct.yaml" | |
| }, | |
| "private": { | |
| ...ruleProviderCommon, | |
| "behavior": "domain", | |
| "url": "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt", | |
| "path": "./ruleset/loyalsoldier/private.yaml" | |
| }, | |
| "cncidr": { | |
| ...ruleProviderCommon, | |
| "behavior": "ipcidr", | |
| "url": "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt", | |
| "path": "./ruleset/loyalsoldier/cncidr.yaml" | |
| }, | |
| "lancidr": { | |
| ...ruleProviderCommon, | |
| "behavior": "ipcidr", | |
| "url": "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/lancidr.txt", | |
| "path": "./ruleset/loyalsoldier/lancidr.yaml" | |
| }, | |
| "applications": { | |
| ...ruleProviderCommon, | |
| "behavior": "classical", | |
| "url": "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/applications.txt", | |
| "path": "./ruleset/loyalsoldier/applications.yaml" | |
| } | |
| }; | |
| // 有些特殊域名需要处理代理分组 | |
| function rulesByProxyGroups(proxyGroups) { | |
| let rules = [ | |
| // 自定义规则 | |
| "DOMAIN-SUFFIX,aliyun.com,DIRECT", | |
| "DOMAIN-SUFFIX,dingtalkapps.com,DIRECT", | |
| "DOMAIN-SUFFIX,wookongzuche.com,DIRECT", | |
| "DOMAIN-SUFFIX,wkzuche.com,DIRECT", | |
| "DOMAIN-SUFFIX,taai.work,DIRECT", | |
| "DOMAIN-SUFFIX,cocopilot.org,DIRECT", | |
| "DOMAIN-SUFFIX,oaipro.com,DIRECT", | |
| "DOMAIN-SUFFIX,oaifree.com,DIRECT", | |
| "DOMAIN-SUFFIX,deeplx.org,DIRECT", | |
| "DOMAIN-SUFFIX,wkzuche.com,DIRECT", | |
| // BWG Server | |
| "IP-CIDR,67.230.182.89/32,DIRECT,no-resolve", | |
| "IP-CIDR,10.16.0.0/16,DIRECT,no-resolve", | |
| // Loyalsoldier 规则集 | |
| "RULE-SET,applications,DIRECT", | |
| "RULE-SET,private,DIRECT", | |
| "RULE-SET,direct,DIRECT", | |
| "RULE-SET,lancidr,DIRECT,no-resolve", | |
| "RULE-SET,cncidr,DIRECT,no-resolve", | |
| // process direct | |
| "PROCESS-NAME,DingTalk,DIRECT", | |
| ]; | |
| if (!Array.isArray(proxyGroups)) { | |
| return rules; | |
| } | |
| const group = proxyGroups.find(x => | |
| x.name.includes('谷歌') || | |
| x.name.toLowerCase().includes('google') || | |
| ['FlyShadowVPN', 'BWG'].includes(x.name) | |
| ); | |
| // 需要使用代理的规则 | |
| if (group) { | |
| rules = [ | |
| "DOMAIN-SUFFIX,gstatic.com," + group.name, | |
| "DOMAIN-SUFFIX,google.com," + group.name, | |
| "DOMAIN-SUFFIX,googleapis.com," + group.name, | |
| "DOMAIN-SUFFIX,platform.deepseek.com," + group.name, | |
| "DOMAIN-SUFFIX,siliconflow.c," + group.name, | |
| "DOMAIN-SUFFIX,leetcode.com," + group.name, | |
| "DOMAIN-SUFFIX,visualstudio.com," + group.name, | |
| ...rules | |
| ] | |
| } | |
| return rules; | |
| } | |
| // 程序入口 | |
| function main(conf) { | |
| // 覆盖原配置中DNS配置 | |
| conf["dns"] = dnsConfig; | |
| // 覆盖 find-process-mode,值:always, strict, off | |
| conf["find-process-mode"] = 'always'; | |
| // 修改原配置中的规则 | |
| conf["rule-providers"] = ruleProviders; | |
| conf["rules"] = [ | |
| ...rulesByProxyGroups(conf['proxy-groups']), | |
| ...conf["rules"] | |
| ]; | |
| // 返回修改后的配置 | |
| return conf; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment