Skip to content

Instantly share code, notes, and snippets.

@alexkuang0
Last active January 26, 2026 15:39
Show Gist options
  • Select an option

  • Save alexkuang0/b30050529ebc10f1fe7896d4d11f79e0 to your computer and use it in GitHub Desktop.

Select an option

Save alexkuang0/b30050529ebc10f1fe7896d4d11f79e0 to your computer and use it in GitHub Desktop.
const staticProxy = {
name: "家宽落地节点",
type: "socks5",
server: "<刚复制的IP地址, 不含端口号>",
port: 443,
username: "<刚复制的用户名>",
password: "<刚复制的密码>",
"skip-cert-verify": true,
"dialer-proxy": "AUTO"
};
function getRuleProvider(name) {
return {
type: "http",
format: "yaml",
interval: 86400,
behavior: "classical",
url: `https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/${name}/${name}.yaml`,
path: `./ruleset/${name}.yaml`
}
}
const ruleProviders = {
openai: getRuleProvider('OpenAI'),
claude: getRuleProvider('Claude'),
gemini: getRuleProvider('Gemini'),
google: getRuleProvider('Google'),
youtube: getRuleProvider('YouTube'),
twitter: getRuleProvider('Twitter'),
};
const mergeRules = [
"PROCESS-NAME,ssh,DIRECT",
"DST-PORT,22,DIRECT",
"RULE-SET,openai,AI",
"RULE-SET,claude,AI",
"RULE-SET,gemini,AI",
"RULE-SET,google,AI",
"RULE-SET,youtube,AI",
"RULE-SET,twitter,AI",
"DOMAIN-SUFFIX,supabase.co,AI",
"DOMAIN-SUFFIX,cursor.sh,AI",
"DOMAIN-SUFFIX,perplexity.ai,AI",
"DOMAIN-SUFFIX,groq.com,AI",
"DOMAIN-SUFFIX,crunchbase.com,AI",
"DOMAIN-SUFFIX,x.ai,AI",
"DOMAIN-SUFFIX,cloudflare.com,AI",
"DOMAIN-SUFFIX,cloudflareinsights.com,AI",
"DOMAIN-SUFFIX,onsleek.ai,AI",
"DOMAIN-SUFFIX,grok.com,AI",
"DOMAIN-SUFFIX,grokipedia.com,AI",
"DOMAIN-SUFFIX,grokusercontent.com,AI",
"DOMAIN-SUFFIX,agilebits.com,AI",
"DOMAIN-KEYWORD,z-library,AI",
"DOMAIN-SUFFIX,arc.net,AI",
"DOMAIN-SUFFIX,claude.com,AI",
"DOMAIN-SUFFIX,mintlify.com,AI",
];
function main(config) {
const allProxies = config.proxies
.filter(p => !p.name.includes("剩余流量") && !p.name.includes("套餐到期"))
.map(p => p.name);
const usProxies = allProxies.filter(p => p.includes("美国"));
const jpProxies = allProxies.filter(p => p.includes("日本"));
const hkProxies = allProxies.filter(p => p.includes("香港"));
const proxyGroups = [
{
name: "PROXY",
type: "select",
proxies: ["AUTO", "AI", "AI-FALLBACK", "US", "JP", "SG", "HK"]
},
{
name: "AUTO",
type: "url-test",
proxies: allProxies,
url: "http://www.gstatic.com/generate_204",
interval: 300
},
// AI 分组
{
name: "AI-FALLBACK",
type: "url-test",
proxies: ["US", "SG", "JP"],
url: "https://api.openai.com/",
interval: 300
},
{
name: "AI",
type: "fallback",
proxies: ["家宽落地节点", "AI-FALLBACK"],
url: "https://api.openai.com/",
interval: 300
},
// 地区分组
{
name: "US",
type: "url-test",
proxies: usProxies,
url: "http://www.gstatic.com/generate_204",
interval: 300
},
{
name: "JP",
type: "url-test",
proxies: jpProxies,
url: "http://www.gstatic.com/generate_204",
interval: 300
},
{
name: "SG",
type: "url-test",
proxies: jpProxies,
url: "http://www.gstatic.com/generate_204",
interval: 300
},
{
name: "HK",
type: "url-test",
proxies: hkProxies,
url: "http://www.gstatic.com/generate_204",
interval: 300
}
];
const oldProxyGroupName =
(config["proxy-groups"][0] || {}).name;
const updatedRules = config.rules.map(rule =>
rule.replace(
new RegExp(`,${oldProxyGroupName}(,no-resolve)?$`),
`,PROXY$1`
)
);
return {
...config,
proxies: [...config.proxies, staticProxy],
"rule-providers": [...config['rule-providers'], ...ruleProviders],
"proxy-groups": proxyGroups,
rules: [...mergeRules, ...updatedRules]
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment