Skip to content

Instantly share code, notes, and snippets.

@1oo1
Last active June 4, 2025 02:50
Show Gist options
  • Select an option

  • Save 1oo1/ec0d802f014f568c3f98f3aac3e9e001 to your computer and use it in GitHub Desktop.

Select an option

Save 1oo1/ec0d802f014f568c3f98f3aac3e9e001 to your computer and use it in GitHub Desktop.
自用 ClashVergeRev脚本
// 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