Last active
April 13, 2025 12:12
-
-
Save qzchenwl/6eacbb474f4e3ef58903362c2aea1aeb to your computer and use it in GitHub Desktop.
合并多份clash订阅到一份中,支持复用规则、自定义规则。
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
# 基础订阅 | |
subscribers: | |
nzl: &nzl !include https://path/to/your/subscription.yaml | |
mewu: &mewu !include https://path/to/your/another/subscription.yaml | |
proxies: &proxies !flatten | |
- !jq { object: *nzl, filter: '[.proxies[] | (.name += "-nzl")]' } | |
- !jq { object: *mewu, filter: '[.proxies[] | (.name += "-mewu")]' } | |
proxy-names: &all !jq { object: *proxies, filter: '[.[].name]' } | |
hk-proxy-names: &hk !jq { object: *all, filter: '[.[] | select(contains("香港"))]' } | |
tw-proxy-names: &tw !jq { object: *all, filter: '[.[] | select(contains("台湾"))]' } | |
kr-proxy-names: &kr !jq { object: *all, filter: '[.[] | select(contains("韩国"))]' } | |
jp-proxy-names: &jp !jq { object: *all, filter: '[.[] | select(contains("日本"))]' } | |
sg-proxy-names: &sg !jq { object: *all, filter: '[.[] | select(contains("新加坡"))]' } | |
us-proxy-names: &us !jq { object: *all, filter: '[.[] | select(contains("美国"))]' } | |
ru-proxy-names: &ru !jq { object: *all, filter: '[.[] | select(contains("俄罗斯"))]' } | |
de-proxy-names: &de !jq { object: *all, filter: '[.[] | select(contains("德国"))]' } | |
uk-proxy-names: &uk !jq { object: *all, filter: '[.[] | select(contains("英国"))]' } | |
fr-proxy-names: &fr !jq { object: *all, filter: '[.[] | select(contains("法国"))]' } | |
ca-proxy-names: &ca !jq { object: *all, filter: '[.[] | select(contains("加拿大"))]' } | |
es-proxy-names: &es !jq { object: *all, filter: '[.[] | select(contains("西班牙"))]' } | |
au-proxy-names: &au !jq { object: *all, filter: '[.[] | select(contains("澳大利亚"))]' } | |
it-proxy-names: &it !jq { object: *all, filter: '[.[] | select(contains("意大利"))]' } | |
tk-proxy-names: &tk !jq { object: *all, filter: '[.[] | select(contains("土耳其"))]' } | |
openai-proxy-names: &openai !flatten [*tw, *kr, *jp, *sg, *us, *de, *uk, *fr, *ca, *es, *au, *it] | |
group-proxy-names: &group !flatten [[🚀 节点选择, 🎯 全球直连, ♻️ 自动选择], *all] | |
# 输出订阅 | |
port: 7890 | |
socks-port: 7891 | |
allow-lan: true | |
mode: rule | |
log-level: info | |
external-controller: :9090 | |
proxies: *proxies | |
proxy-groups: | |
- name: 🛠️ 手动切换 | |
type: select | |
proxies: *all | |
- name: 🚀 节点选择 | |
type: select | |
proxies: | |
- ♻️ 自动选择 | |
- ♻️ OpenAI自动选择 | |
- 🛠️ 手动切换 | |
- 🇭🇰 香港节点 | |
- 🇺🇲 美国节点 | |
- 🇯🇵 日本节点 | |
- DIRECT | |
- name: 🎯 全球直连 | |
type: select | |
proxies: | |
- DIRECT | |
- 🚀 节点选择 | |
- ♻️ 自动选择 | |
- name: 🛑 全球拦截 | |
type: select | |
proxies: | |
- REJECT | |
- DIRECT | |
- name: 🍃 应用净化 | |
type: select | |
proxies: | |
- REJECT | |
- DIRECT | |
- name: 🐟 漏网之鱼 | |
type: select | |
proxies: !flatten | |
- - 🚀 节点选择 | |
- 🎯 全球直连 | |
- ♻️ 自动选择 | |
- *all | |
- name: 🇯🇵 日本节点 | |
type: url-test | |
url: http://www.gstatic.com/generate_204 | |
interval: 300 | |
tolerance: 50 | |
proxies: *jp | |
- name: 🇭🇰 香港节点 | |
type: url-test | |
url: http://www.gstatic.com/generate_204 | |
interval: 600 | |
tolerance: 50 | |
proxies: *hk | |
- name: 🇺🇲 美国节点 | |
type: url-test | |
url: http://www.gstatic.com/generate_204 | |
interval: 300 | |
tolerance: 150 | |
proxies: *us | |
- name: ♻️ 自动选择 | |
type: url-test | |
url: http://www.gstatic.com/generate_204 | |
interval: 300 | |
tolerance: 50 | |
proxies: *all | |
- name: ♻️ OpenAI自动选择 | |
type: url-test | |
url: http://www.gstatic.com/generate_204 | |
interval: 300 | |
tolerance: 150 | |
proxies: *openai | |
- name: 🤖 OpenAI | |
type: select | |
proxies: !flatten | |
- - ♻️ OpenAI自动选择 | |
- *openai | |
- name: 📢 谷歌FCM | |
type: select | |
proxies: *group | |
- name: 📲 电报信息 | |
type: select | |
proxies: *group | |
- name: 🌍 国外媒体 | |
type: select | |
proxies: *group | |
- name: Ⓜ️ 微软服务 | |
type: select | |
proxies: *group | |
- name: 🍎 苹果服务 | |
type: select | |
proxies: *group | |
rules: !flatten | |
- - DOMAIN-SUFFIX,openai.com,🤖 OpenAI | |
- DOMAIN-SUFFIX,auth0.com,🤖 OpenAI | |
- DOMAIN-SUFFIX,bing.com,🤖 OpenAI | |
- DOMAIN-SUFFIX,live.com,🤖 OpenAI | |
- DOMAIN-SUFFIX,oaistatic.com,🤖 OpenAI | |
- !jq {object: *nzl, filter: '[.rules[] | select(contains("openai")|not)]'} | |
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
#!/usr/bin/env python | |
# pip install yaml-transformer | |
from http.server import BaseHTTPRequestHandler, HTTPServer | |
import yaml | |
from yaml_transformer import TransformerLoader | |
class Server(BaseHTTPRequestHandler): | |
def do_GET(self): | |
with open('config.yaml') as f: | |
result = yaml.load(f, Loader=TransformerLoader) | |
del result['subscribers'] | |
content = yaml.dump(result, allow_unicode=True, sort_keys=False) | |
self.send_response(200) | |
self.send_header('Content-type', 'text/yaml') | |
self.end_headers() | |
self.wfile.write(bytes(content, 'utf-8')) | |
if __name__ == '__main__': | |
server = HTTPServer(('localhost', 8080), Server) | |
print('Listen localhost:8080') | |
server.serve_forever() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment