Skip to content

Instantly share code, notes, and snippets.

@FDUZS
Last active June 19, 2024 08:02
Show Gist options
  • Save FDUZS/fd75c1d08baf2f7985cf34f58371cda5 to your computer and use it in GitHub Desktop.
Save FDUZS/fd75c1d08baf2f7985cf34f58371cda5 to your computer and use it in GitHub Desktop.

Revisions

  1. FDUZS revised this gist Jul 24, 2023. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions yet-another-parsers.yaml
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,5 @@
    # 基于 https://github.com/Loyalsoldier/clash-rules

    parsers: # array
    # - url: https://example.com/profile.yaml # 指定订阅
    - reg: ^.*$ # 匹配所有订阅
  2. FDUZS created this gist Jul 14, 2023.
    102 changes: 102 additions & 0 deletions yet-another-parsers.yaml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,102 @@
    parsers: # array
    # - url: https://example.com/profile.yaml # 指定订阅
    - reg: ^.*$ # 匹配所有订阅
    # - reg: ^https://sub\.example\.com/.+$ # 正则匹配域名
    # 删除服务商提供的策略组和规则
    code: |
    module.exports.parse = (raw, { yaml }) => {
    const rawObj = yaml.parse(raw)
    const groups = []
    const rules = []
    return yaml.stringify({ ...rawObj, 'proxy-groups': groups, rules })
    }
    # 建立自己的配置
    yaml:
    # 建立策略组
    prepend-proxy-groups:
    - { name: 自动选择, type: url-test, url: 'http://www.gstatic.com/generate_204', interval: 300, tolerance: 50, lazy: true }
    - { name: 手动选择, type: select }

    - { name: 代理节点, type: select, proxies: [Fallback, 香港节点, 台湾节点, 狮城节点, 日本节点, 美国节点, 自动选择, 手动选择] }

    - { name: 广告域名, type: select, proxies: [REJECT, 代理节点, DIRECT] }

    - { name: iCloud, type: select, proxies: [DIRECT, 代理节点] }

    - { name: Apple, type: select, proxies: [DIRECT, 代理节点] }

    - { name: Google, type: select, proxies: [代理节点, DIRECT] }

    - { name: Final, type: select, proxies: [代理节点, 自动选择, 手动选择, DIRECT] }

    - { name: Fallback, type: fallback, url: 'http://www.gstatic.com/generate_204', interval: 300, proxies: [香港节点, 台湾节点, 狮城节点, 日本节点, 美国节点] }
    - { name: 香港节点, type: url-test, url: 'http://www.gstatic.com/generate_204', interval: 300, tolerance: 50, lazy: true }
    - { name: 台湾节点, type: url-test, url: 'http://www.gstatic.com/generate_204', interval: 300, tolerance: 50, lazy: true }
    - { name: 狮城节点, type: url-test, url: 'http://www.gstatic.com/generate_204', interval: 300, tolerance: 50, lazy: true }
    - { name: 日本节点, type: url-test, url: 'http://www.gstatic.com/generate_204', interval: 300, tolerance: 50, lazy: true }
    - { name: 美国节点, type: url-test, url: 'http://www.gstatic.com/generate_204', interval: 300, tolerance: 50, lazy: true }

    # 策略组示例
    # - name: 分组名
    # type: select # 手动选点
    # url-test # 自动选择延迟最低的节点
    # fallback # 节点故障时自动切换下一个
    # laod-balance # 均衡使用分组内的节点
    # url: http://www.gstatic.com/generate_204 # 测试地址 非 select 类型分组必要
    # interval: 300 # 自动测试间隔时间,单位秒 非 select 类型分组必要
    # tolerance: 50 # 允许的偏差,节点之间延迟差小于该值不切换 非必要
    # proxies:
    # - 节点名称或其他分组套娃

    commands:
    - proxy-groups.自动选择.proxies=[]proxyNames
    - proxy-groups.手动选择.proxies=[]proxyNames
    - proxy-groups.香港节点.proxies=[]proxyNames|^(.*)(HK|香港|港|Hong Kong)+(.*)$ # 向指定策略组添加订阅中的节点名,可使用正则过滤
    - proxy-groups.台湾节点.proxies=[]proxyNames|^(.*)(TW|台湾|台|Taiwan)+(.*)$
    - proxy-groups.狮城节点.proxies=[]proxyNames|^(.*)(SG|新加坡|坡|Singapore)+(.*)$
    - proxy-groups.日本节点.proxies=[]proxyNames|^(.*)(JP|日本|日|Japan)+(.*)$
    - proxy-groups.美国节点.proxies=[]proxyNames|^(.*)(US|美国|美|United States)+(.*)$

    # 一些可能用到的正则过滤节点示例,使分组更细致
    # []proxyNames|a # 包含 a
    # []proxyNames|^(.*)(a|b)+(.*)$ # 包含 a 或 b
    # []proxyNames|^(?=.*a)(?=.*b).*$ # 包含 a 和 b
    # []proxyNames|^((?!b).)*a((?!b).)*$ # 包含 a 且不包含 b
    # []proxyNames|^((?!b|c).)*a((?!b|c).)*$ # 包含 a 且不包含 b 或 c

    # 添加规则
    prepend-rules: # 规则由上往下遍历,如上面规则已经命中,则不再往下处理
    - RULE-SET,applications,DIRECT # 需要直连的常见软件列表
    - DOMAIN,clash.razord.top,DIRECT # Clash 面板
    - DOMAIN,yacd.haishan.me,DIRECT # Clash 面板
    - RULE-SET,private,DIRECT # 私有网络专用域名列表
    - RULE-SET,reject,广告域名 # 广告域名列表
    - RULE-SET,icloud,iCloud # iCloud 域名列表
    - RULE-SET,apple,Apple # Apple 在中国大陆可直连的域名列表
    - RULE-SET,google,Google # Google 在中国大陆可直连的域名列表
    - RULE-SET,proxy,代理节点 # 代理域名列表
    - RULE-SET,direct,DIRECT # 直连域名列表
    - RULE-SET,lancidr,DIRECT # 局域网 IP 及保留 IP 地址列表
    - RULE-SET,cncidr,DIRECT # 中国大陆 IP 地址列表
    - RULE-SET,tld-not-cn,代理节点 # 非中国大陆使用的顶级域名列表
    - RULE-SET,gfw,代理节点 # GFWList 域名列表
    - RULE-SET,telegramcidr,代理节点 # Telegram 使用的 IP 地址列表
    - GEOIP,LAN,DIRECT
    - GEOIP,CN,DIRECT
    - MATCH,Final

    # 添加规则集
    mix-rule-providers:
    reject: { type: http, behavior: domain, url: 'https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt', path: ./ruleset/reject.yaml, interval: 86400 }
    icloud: { type: http, behavior: domain, url: 'https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/icloud.txt', path: ./ruleset/icloud.yaml, interval: 86400 }
    apple: { type: http, behavior: domain, url: 'https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt', path: ./ruleset/apple.yaml, interval: 86400 }
    google: { type: http, behavior: domain, url: 'https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt', path: ./ruleset/google.yaml, interval: 86400 }
    proxy: { type: http, behavior: domain, url: 'https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt', path: ./ruleset/proxy.yaml, interval: 86400 }
    direct: { type: http, behavior: domain, url: 'https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt', path: ./ruleset/direct.yaml, interval: 86400 }
    private: { type: http, behavior: domain, url: 'https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt', path: ./ruleset/private.yaml, interval: 86400 }
    gfw: { type: http, behavior: domain, url: 'https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/gfw.txt', path: ./ruleset/gfw.yaml, interval: 86400 }
    tld-not-cn: { type: http, behavior: domain, url: 'https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/tld-not-cn.txt', path: ./ruleset/tld-not-cn.yaml, interval: 86400 }
    telegramcidr: { type: http, behavior: ipcidr, url: 'https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/telegramcidr.txt', path: ./ruleset/telegramcidr.yaml, interval: 86400 }
    cncidr: { type: http, behavior: ipcidr, url: 'https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt', path: ./ruleset/cncidr.yaml, interval: 86400 }
    lancidr: { type: http, behavior: ipcidr, url: 'https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/lancidr.txt', path: ./ruleset/lancidr.yaml, interval: 86400 }
    applications: { type: http, behavior: classical, url: 'https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/applications.txt', path: ./ruleset/applications.yaml, interval: 86400 }