|
/*** |
|
* Clash Verge Rev 全局扩展脚本(懒人配置)/ Mihomo Party 覆写脚本 |
|
* URL: https://gist.github.com/dahaha-365/0b8beb613f8d1ee656fe1f21e1a07959 |
|
*/ |
|
|
|
/** |
|
* 整个脚本的总开关,在Mihomo Party使用的话,请保持为true |
|
* true = 启用 |
|
* false = 禁用 |
|
*/ |
|
const enable = true; |
|
|
|
/** |
|
* 分流规则配置,会自动生成对应的策略组 |
|
* 设置的时候可遵循“最小,可用”原则,把自己不需要的规则全禁用掉,提高效率 |
|
* true = 启用 |
|
* false = 禁用 |
|
*/ |
|
const ruleOptions = { |
|
apple: true, // 苹果服务 |
|
microsoft: true, // 微软服务 |
|
google: true, // Google服务 |
|
openai: true, // 国外AI和GPT |
|
spotify: true, // Spotify |
|
youtube: true, // YouTube |
|
bahamut: true, // 巴哈姆特/动画疯 |
|
netflix: true, // Netflix网飞 |
|
tiktok: true, // 国际版抖音 |
|
disney: true, // 迪士尼 |
|
pixiv: true, // Pixiv |
|
hbo: true, // HBO |
|
biliintl: true, // 哔哩哔哩东南亚 |
|
tvb: true, // TVB |
|
hulu: true, // Hulu |
|
primevideo: true, // 亚马逊prime video |
|
telegram: true, // Telegram通讯软件 |
|
line: true, // Line通讯软件 |
|
whatsapp: true, // Whatsapp |
|
games: true, // 游戏策略组 |
|
japan: true, // 日本网站策略组 |
|
tracker: true, // 网络分析和跟踪服务 |
|
ads: true, // 常见的网络广告 |
|
}; |
|
|
|
/** |
|
* 地区配置,通过regex匹配代理节点名称 |
|
* regex会有一定概率误判,自己调整一下吧 |
|
* excludeHighPercentage是排除高倍率节点的开关,只对地区分组有效 |
|
* 倍率大于regions里的ratioLimit值的代理节点会被排除 |
|
*/ |
|
const regionOptions = { |
|
excludeHighPercentage: true, |
|
regions: [ |
|
{ |
|
name: "HK香港", |
|
regex: /港|🇭🇰|hk|hongkong|hong kong/i, |
|
ratioLimit: 2, |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Hong_Kong.png", |
|
}, |
|
{ |
|
name: "US美国", |
|
regex: /美|🇺🇸|us|united state|america/i, |
|
ratioLimit: 2, |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/United_States.png", |
|
}, |
|
{ |
|
name: "JP日本", |
|
regex: /日本|🇯🇵|jp|japan/i, |
|
ratioLimit: 2, |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Japan.png", |
|
}, |
|
{ |
|
name: "KR韩国", |
|
regex: /韩|🇰🇷|kr|korea/i, |
|
ratioLimit: 2, |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Korea.png", |
|
}, |
|
{ |
|
name: "SG新加坡", |
|
regex: /新加坡|🇸🇬|sg|singapore/i, |
|
ratioLimit: 2, |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Singapore.png", |
|
}, |
|
{ |
|
name: "CN中国大陆", |
|
regex: /中国|🇨🇳|cn|china/i, |
|
ratioLimit: 2, |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/China_Map.png", |
|
}, |
|
{ |
|
name: "TW台湾省", |
|
regex: /台湾|🇹🇼|tw|taiwan|tai wan/i, |
|
ratioLimit: 2, |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/China.png", |
|
}, |
|
{ |
|
name: "GB英国", |
|
regex: /英|🇬🇧|uk|united kingdom|great britain/i, |
|
ratioLimit: 2, |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/United_Kingdom.png", |
|
}, |
|
{ |
|
name: "DE德国", |
|
regex: /德国|🇩🇪|de|germany/i, |
|
ratioLimit: 2, |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Germany.png", |
|
}, |
|
{ |
|
name: "MY马来西亚", |
|
regex: /马来|🇩🇪|my|malaysia/i, |
|
ratioLimit: 2, |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Malaysia.png", |
|
}, |
|
{ |
|
name: "TK土耳其", |
|
regex: /土耳其|🇹🇷|tk|turkey/i, |
|
ratioLimit: 2, |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Turkey.png", |
|
}, |
|
], |
|
}; |
|
|
|
/** |
|
* 其实两组DNS就够了,一组国内,一组国外 |
|
* defaultDNS是用来解析DNS的,必须为IP |
|
* DNS最好不要超过两个,从业界某知名APP的文档里学的 |
|
*/ |
|
const defaultDNS = ["tls://1.12.12.12", "tls://223.5.5.5"]; |
|
|
|
const chinaDNS = ["119.29.29.29", "180.184.1.1"]; |
|
|
|
const foreignDNS = ["tls://8.8.8.8", "tls://1.1.1.1", "tls://9.9.9.9"]; |
|
|
|
/** |
|
* DNS相关配置 |
|
*/ |
|
const dnsConfig = { |
|
enable: true, |
|
listen: ":53", |
|
ipv6: true, |
|
"prefer-h3": true, |
|
"use-hosts": true, |
|
"use-system-hosts": true, |
|
"respect-rules": true, |
|
"enhanced-mode": "fake-ip", |
|
"fake-ip-range": "198.18.0.1/16", |
|
"fake-ip-filter": ["*", "+.lan", "+.local", "+.market.xiaomi.com"], |
|
"default-nameserver": [...defaultDNS], |
|
nameserver: [...foreignDNS], |
|
"proxy-server-nameserver": [...foreignDNS], |
|
/** |
|
* 这里对域名解析进行分流 |
|
* 由于默认dns是国外的了,只需要把国内ip和域名分流到国内dns |
|
*/ |
|
"nameserver-policy": { |
|
"geosite:private": "system", |
|
"geosite:cn,steam@cn,category-games@cn,microsoft@cn,apple@cn": chinaDNS, |
|
}, |
|
}; |
|
|
|
// 规则集通用配置 |
|
const ruleProviderCommon = { |
|
type: "http", |
|
format: "yaml", |
|
interval: 86400, |
|
}; |
|
|
|
// 代理组通用配置 |
|
const groupBaseOption = { |
|
interval: 300, |
|
timeout: 3000, |
|
url: "http://cp.cloudflare.com/generate_204", |
|
lazy: true, |
|
"max-failed-times": 3, |
|
hidden: false, |
|
}; |
|
|
|
const ruleProviders = new Map(); |
|
ruleProviders.set("applications", { |
|
...ruleProviderCommon, |
|
behavior: "classical", |
|
format: "text", |
|
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@clash-ruleset/applications.list", |
|
path: "./ruleset/DustinWin/applications.list", |
|
}); |
|
|
|
const rules = ["RULE-SET,applications,下载软件"]; |
|
|
|
// 程序入口 |
|
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("配置文件中未找到任何代理"); |
|
} |
|
|
|
let regionProxyGroups = []; |
|
let otherProxyGroups = config.proxies.map((b) => { |
|
return b.name; |
|
}); |
|
|
|
config["allow-lan"] = true; |
|
|
|
config["bind-address"] = "*"; |
|
|
|
config["mode"] = "rule"; |
|
|
|
// 覆盖原配置中DNS配置 |
|
config["dns"] = dnsConfig; |
|
|
|
config["profile"] = { |
|
"store-selected": true, |
|
"store-fake-ip": true, |
|
}; |
|
|
|
config["unified-delay"] = true; |
|
|
|
config["tcp-concurrent"] = true; |
|
|
|
/** |
|
* 这个值设置大点能省电,笔记本和手机需要关注一下 |
|
*/ |
|
config["keep-alive-interval"] = 1800; |
|
|
|
config["find-process-mode"] = "strict"; |
|
|
|
config["geodata-mode"] = true; |
|
|
|
/** |
|
* 适合小内存环境,如果在旁路由里运行可以改成standard |
|
*/ |
|
config["geodata-loader"] = "memconservative"; |
|
|
|
config["geo-auto-update"] = true; |
|
|
|
config["geo-update-interval"] = 24; |
|
|
|
/** |
|
* 不开域名嗅探的话,日志里只会记录请求的ip,对查找问题不方便 |
|
* override-destination默认值是true,但是个人建议全局设为false,否则某些应用会出现莫名其妙的问题 |
|
* Mijia Cloud跳过是网上抄的 |
|
*/ |
|
config["sniffer"] = { |
|
enable: true, |
|
"force-dns-mapping": true, |
|
"parse-pure-ip": true, |
|
"override-destination": false, |
|
sniff: { |
|
TLS: { |
|
ports: [443, 8443], |
|
}, |
|
HTTP: { |
|
ports: [80, "8080-8880"], |
|
}, |
|
QUIC: { |
|
ports: [443, 8443], |
|
}, |
|
}, |
|
"force-domain": [], |
|
"skip-domain": ["Mijia Cloud", "+.oray.com"], |
|
}; |
|
|
|
/** |
|
* write-to-system如果设为true的话,有可能出现电脑时间不对的问题 |
|
*/ |
|
config["ntp"] = { |
|
enable: true, |
|
"write-to-system": false, |
|
server: "cn.ntp.org.cn", |
|
}; |
|
|
|
/** |
|
* 总开关关闭时不处理策略组 |
|
*/ |
|
if (!enable) { |
|
return config; |
|
} |
|
|
|
regionOptions.regions.forEach((region) => { |
|
/** |
|
* 提取倍率符合要求的代理节点 |
|
* 判断倍率有问题的话,大概率是这个正则的问题,可以自行修改 |
|
* 自己改正则的话记得必须把倍率的number值提取出来 |
|
*/ |
|
let proxies = config.proxies |
|
.filter((a) => { |
|
const multiplier = |
|
/(?<=[xX✕✖⨉倍率])([1-9]+(\.\d+)*|0{1}\.\d+)(?=[xX✕✖⨉倍率])*/i.exec( |
|
a.name |
|
)?.[1]; |
|
return ( |
|
a.name.match(region.regex) && |
|
parseFloat(multiplier || "0") <= region.ratioLimit |
|
); |
|
}) |
|
.map((b) => { |
|
return b.name; |
|
}); |
|
|
|
/** |
|
* 必须再判断一下有没有符合要求的代理节点 |
|
* 没有的话,这个策略组就不应该存在 |
|
* 我喜欢自动选择延迟最低的节点,喜欢轮询的可以自己修改 |
|
*/ |
|
if (proxies.length > 0) { |
|
regionProxyGroups.push({ |
|
...groupBaseOption, |
|
name: region.name, |
|
type: "url-test", |
|
tolerance: 50, |
|
icon: region.icon, |
|
proxies: proxies, |
|
}); |
|
} |
|
|
|
otherProxyGroups = otherProxyGroups.filter((x) => !proxies.includes(x)); |
|
}); |
|
|
|
const proxyGroupsRegionNames = regionProxyGroups.map((value) => { |
|
return value.name; |
|
}); |
|
|
|
if (otherProxyGroups.length > 0) { |
|
proxyGroupsRegionNames.push("其他节点"); |
|
} |
|
|
|
config["proxy-groups"] = [ |
|
{ |
|
...groupBaseOption, |
|
name: "默认节点", |
|
type: "select", |
|
proxies: [...proxyGroupsRegionNames, "直连"], |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Proxy.png", |
|
}, |
|
]; |
|
|
|
config.proxies = config?.proxies || []; |
|
config.proxies.push({ |
|
name: "直连", |
|
type: "direct", |
|
udp: true, |
|
}); |
|
|
|
if (ruleOptions.openai) { |
|
rules.push( |
|
"DOMAIN-SUFFIX,grazie.ai,国外AI", |
|
"DOMAIN-SUFFIX,grazie.aws.intellij.net,国外AI", |
|
"RULE-SET,ai,国外AI" |
|
); |
|
ruleProviders.set("ai", { |
|
...ruleProviderCommon, |
|
behavior: "domain", |
|
format: "mrs", |
|
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@clash-ruleset/ai.mrs", |
|
path: "./ruleset/DustinWin/ai.mrs", |
|
}); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "国外AI", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "https://chat.openai.com/cdn-cgi/trace", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/ChatGPT.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.youtube) { |
|
rules.push("GEOSITE,youtube,YouTube"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "YouTube", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "https://www.youtube.com/s/desktop/494dd881/img/favicon.ico", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/YouTube.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.biliintl) { |
|
rules.push("GEOSITE,biliintl,哔哩哔哩东南亚"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "哔哩哔哩东南亚", |
|
type: "select", |
|
proxies: ["默认节点", "直连", ...proxyGroupsRegionNames], |
|
url: "https://www.bilibili.tv/", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/bilibili_3.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.bahamut) { |
|
rules.push("GEOSITE,bahamut,巴哈姆特"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "巴哈姆特", |
|
type: "select", |
|
proxies: ["默认节点", "直连", ...proxyGroupsRegionNames], |
|
url: "https://ani.gamer.com.tw/ajax/getdeviceid.php", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Bahamut.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.disney) { |
|
rules.push("GEOSITE,disney,Disney+"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "Disney+", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "https://disney.api.edge.bamgrid.com/devices", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Disney+.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.netflix) { |
|
rules.push("GEOSITE,netflix,NETFLIX"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "NETFLIX", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "https://api.fast.com/netflix/speedtest/v2?https=true", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Netflix.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.tiktok) { |
|
rules.push("GEOSITE,tiktok,Tiktok"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "Tiktok", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "https://www.tiktok.com/", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/TikTok.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.spotify) { |
|
rules.push("GEOSITE,spotify,Spotify"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "Spotify", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "http://spclient.wg.spotify.com/signup/public/v1/account", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Spotify.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.pixiv) { |
|
rules.push("GEOSITE,pixiv,Pixiv"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "Pixiv", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "http://spclient.wg.spotify.com/signup/public/v1/account", |
|
icon: "https://play-lh.googleusercontent.com/8pFuLOHF62ADcN0ISUAyEueA5G8IF49mX_6Az6pQNtokNVHxIVbS1L2NM62H-k02rLM=w240-h480-rw", |
|
}); |
|
} |
|
|
|
if (ruleOptions.hbo) { |
|
rules.push("GEOSITE,hbo,HBO"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "HBO", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "https://www.hbo.com/favicon.ico", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/HBO.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.tvb) { |
|
rules.push("GEOSITE,tvb,TVB"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "TVB", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "https://www.tvb.com/logo_b.svg", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/TVB.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.primevideo) { |
|
rules.push("GEOSITE,primevideo,Prime Video"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "Prime Video", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "https://m.media-amazon.com/images/G/01/digital/video/web/logo-min-remaster.png", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Prime_Video.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.hulu) { |
|
rules.push("GEOSITE,hulu,Hulu"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "Hulu", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "https://auth.hulu.com/v4/web/password/authenticate", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Hulu.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.telegram) { |
|
rules.push("GEOIP,telegram,Telegram"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "Telegram", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "http://www.telegram.org/img/website_icon.svg", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Telegram.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.whatsapp) { |
|
rules.push("GEOSITE,whatsapp,WhatsApp"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "WhatsApp", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "https://web.whatsapp.com/data/manifest.json", |
|
icon: "https://static.whatsapp.net/rsrc.php/v3/yP/r/rYZqPCBaG70.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.line) { |
|
rules.push("GEOSITE,line,Line"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "Line", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "https://line.me/page-data/app-data.json", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Line.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.games) { |
|
rules.push( |
|
"GEOSITE,category-games@cn,国内网站", |
|
"GEOSITE,category-games,游戏专用" |
|
); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "游戏专用", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Game.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.tracker) { |
|
rules.push("GEOSITE,tracker,跟踪分析"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "跟踪分析", |
|
type: "select", |
|
proxies: ["REJECT", "直连", "默认节点"], |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Reject.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.ads) { |
|
rules.push("GEOSITE,category-ads-all,广告过滤"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "广告过滤", |
|
type: "select", |
|
proxies: ["REJECT", "直连", "默认节点"], |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Advertising.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.apple) { |
|
rules.push("GEOSITE,apple-cn,苹果服务"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "苹果服务", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "http://www.apple.com/library/test/success.html", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Apple_2.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.google) { |
|
rules.push("GEOSITE,google,谷歌服务"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "谷歌服务", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "http://www.google.com/generate_204", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Google_Search.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.microsoft) { |
|
rules.push("GEOSITE,microsoft@cn,国内网站", "GEOSITE,microsoft,微软服务"); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "微软服务", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "http://www.msftconnecttest.com/connecttest.txt", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Microsoft.png", |
|
}); |
|
} |
|
|
|
if (ruleOptions.japan) { |
|
rules.push( |
|
"RULE-SET,category-bank-jp,日本网站", |
|
"GEOIP,JP,日本网站,no-resolve" |
|
); |
|
ruleProviders.set("category-bank-jp", { |
|
...ruleProviderCommon, |
|
behavior: "domain", |
|
format: "mrs", |
|
url: "https://fastly.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/category-bank-jp.mrs", |
|
path: "./ruleset/MetaCubeX/category-bank-jp.mrs", |
|
}); |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "日本网站", |
|
type: "select", |
|
proxies: ["默认节点", ...proxyGroupsRegionNames, "直连"], |
|
url: "https://r.r10s.jp/com/img/home/logo/touch.png", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/JP.png", |
|
}); |
|
} |
|
|
|
rules.push( |
|
"GEOSITE,private,DIRECT", |
|
"GEOIP,private,DIRECT,no-resolve", |
|
"GEOIP,CN,国内网站,no-resolve", |
|
"MATCH,其他外网" |
|
); |
|
config["proxy-groups"].push( |
|
{ |
|
...groupBaseOption, |
|
name: "下载软件", |
|
type: "select", |
|
proxies: [ |
|
"直连", |
|
"REJECT", |
|
"默认节点", |
|
"国内网站", |
|
...proxyGroupsRegionNames, |
|
], |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Download.png", |
|
}, |
|
{ |
|
...groupBaseOption, |
|
name: "其他外网", |
|
type: "select", |
|
proxies: ["默认节点", "国内网站", ...proxyGroupsRegionNames], |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/Streaming!CN.png", |
|
}, |
|
{ |
|
...groupBaseOption, |
|
name: "国内网站", |
|
type: "select", |
|
proxies: ["直连", "默认节点", ...proxyGroupsRegionNames], |
|
url: "http://wifi.vivo.com.cn/generate_204", |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/StreamingCN.png", |
|
} |
|
); |
|
|
|
config["proxy-groups"] = config["proxy-groups"].concat(regionProxyGroups); |
|
|
|
// 覆盖原配置中的规则 |
|
config["rules"] = rules; |
|
config["rule-providers"] = Object.fromEntries(ruleProviders); |
|
|
|
if (otherProxyGroups.length > 0) { |
|
config["proxy-groups"].push({ |
|
...groupBaseOption, |
|
name: "其他节点", |
|
type: "select", |
|
proxies: otherProxyGroups, |
|
icon: "https://fastly.jsdelivr.net/gh/Koolson/Qure/IconSet/Color/World_Map.png", |
|
}); |
|
} |
|
|
|
// 返回修改后的配置 |
|
return config; |
|
} |
是不是不用写成扩展脚本,直接写yaml配置加上机场的Proxy Provider就行?