# DNS防泄露版本 - Cloudflare Workers 动态生成
# 注意规则在满足自己需求情况下，尽量做到精简，不要过度复杂，以免影响性能。

# 机场订阅
proxy-providers:

# 节点信息
proxies:
  - { name: 拒绝, type: reject }
  - { name: 直连, type: direct }

# 全局配置
port: 7890
socks-port: 7891
mixed-port: 7897
allow-lan: true
bind-address: "*"
ipv6: false
mode: rule
log-level: warning

unified-delay: true
tcp-concurrent: true
keep-alive-idle: 600
keep-alive-interval: 15
find-process-mode: "strict"

profile:
  store-selected: true
  store-fake-ip: true

external-controller: 127.0.0.1:9090
secret: ""
external-ui: "/etc/openclash/ui"
external-ui-name: zashboard
external-ui-url: "https://github.com/Zephyruso/zashboard/releases/latest/download/dist.zip"

# 嗅探
sniffer:
  enable: true
  sniff:
    HTTP:
      ports: [80, 8080-8880]
      override-destination: true
    TLS:
      ports: [443, 8443]
    QUIC:
      ports: [443, 8443]
  force-domain:
    - "+.v2ex.com"
  skip-domain:
    - "+.baidu.com"

# 入站
tun:
  enable: true
  stack: mixed
  dns-hijack: ["any:53", "tcp://any:53"]
  auto-route: true
  auto-redirect: true
  auto-detect-interface: true
  mtu: 1280

dns:
  enable: true
  listen: 0.0.0.0:1053
  ipv6: false
  respect-rules: true
  enhanced-mode: fake-ip
  fake-ip-range: 28.0.0.1/8
  cache-algorithm: arc
  fake-ip-filter-mode: blacklist
  fake-ip-filter:
    - "rule-set:private_domain,cn_domain"
  default-nameserver:
    - 223.5.5.5
    - 223.6.6.6
  nameserver:
    - https://dns.alidns.com/dns-query
    - https://doh.pub/dns-query
  proxy-server-nameserver:
    - 223.5.5.5
    - 119.29.29.29
  direct-nameserver:
    - https://dns.alidns.com/dns-query
    - https://doh.pub/dns-query

# 出站策略
proxy-groups:
  - {
      name: 🚀 默认代理,
      type: select,
      proxies:
        [
          ♻️ 香港自动,
          ♻️ 自动选择,
          🔯 香港故转,
          🔯 日本故转,
          🔯 狮城故转,
          🔯 美国故转,
          🔯 台湾故转,
          ♻️ 台湾自动,
          ♻️ 日本自动,
          ♻️ 狮城自动,
          ♻️ 美国自动,
          🇭🇰 香港节点,
          🇯🇵 日本节点,
          🇸🇬 狮城节点,
          🇺🇲 美国节点,
          🌐 全部节点,
          直连,
        ],
    }
  - {
      name: 📹 YouTube,
      type: select,
      proxies:
        [
          🚀 默认代理,
          ♻️ 香港自动,
          ♻️ 自动选择,
          🔯 美国故转,
          🔯 香港故转,
          🔯 日本故转,
          🔯 狮城故转,
          🔯 台湾故转,
          ♻️ 台湾自动,
          ♻️ 美国自动,
          ♻️ 日本自动,
          ♻️ 狮城自动,
          🇭🇰 香港节点,
          🇯🇵 日本节点,
          🇸🇬 狮城节点,
          🇺🇲 美国节点,
          🌐 全部节点,
          直连,
        ],
    }
  - {
      name: 🍀 Google,
      type: select,
      proxies:
        [
          🚀 默认代理,
          ♻️ 香港自动,
          ♻️ 自动选择,
          🔯 香港故转,
          🔯 日本故转,
          🔯 狮城故转,
          🔯 美国故转,
          🔯 台湾故转,
          ♻️ 台湾自动,
          ♻️ 日本自动,
          ♻️ 狮城自动,
          ♻️ 美国自动,
          🇭🇰 香港节点,
          🇯🇵 日本节点,
          🇸🇬 狮城节点,
          🇺🇲 美国节点,
          🌐 全部节点,
          直连,
        ],
    }
  - {
      name: 🤖 ChatGPT,
      type: select,
      proxies:
        [
          ♻️ 美国自动,
          🔯 美国故转,
          🚀 默认代理,
          🔯 香港故转,
          🔯 日本故转,
          🔯 狮城故转,
          🔯 台湾故转,
          ♻️ 台湾自动,
          ♻️ 香港自动,
          ♻️ 日本自动,
          ♻️ 狮城自动,
          ♻️ 自动选择,
          🇺🇲 美国节点,
          🇭🇰 香港节点,
          🇯🇵 日本节点,
          🇸🇬 狮城节点,
          🏠 家宽节点,
          🌐 全部节点,
          直连,
        ],
    }
  - {
      name: 🏠 家宽节点,
      type: select,
      include-all: true,
      filter: "(?i)家宽|住宅|residential",
    }
  - {
      name: 👨🏿‍💻 GitHub,
      type: select,
      proxies:
        [
          🚀 默认代理,
          ♻️ 香港自动,
          ♻️ 自动选择,
          🔯 香港故转,
          🔯 日本故转,
          🔯 狮城故转,
          🔯 美国故转,
          🔯 台湾故转,
          ♻️ 台湾自动,
          ♻️ 日本自动,
          ♻️ 狮城自动,
          ♻️ 美国自动,
          🇭🇰 香港节点,
          🇯🇵 日本节点,
          🇸🇬 狮城节点,
          🇺🇲 美国节点,
          🌐 全部节点,
          直连,
        ],
    }
  - {
      name: 🐬 OneDrive,
      type: select,
      proxies:
        [
          🚀 默认代理,
          ♻️ 香港自动,
          🔯 香港故转,
          🔯 日本故转,
          🔯 狮城故转,
          🔯 美国故转,
          🔯 台湾故转,
          ♻️ 台湾自动,
          ♻️ 日本自动,
          ♻️ 狮城自动,
          ♻️ 美国自动,
          ♻️ 自动选择,
          🇭🇰 香港节点,
          🇯🇵 日本节点,
          🇸🇬 狮城节点,
          🇺🇲 美国节点,
          🌐 全部节点,
          直连,
        ],
    }
  - {
      name: 🪟 Microsoft,
      type: select,
      proxies:
        [
          直连,
          🔯 日本故转,
          🔯 狮城故转,
          🔯 美国故转,
          🔯 香港故转,
          🔯 台湾故转,
          ♻️ 台湾自动,
          ♻️ 香港自动,
          ♻️ 日本自动,
          ♻️ 狮城自动,
          ♻️ 美国自动,
          ♻️ 自动选择,
          🇭🇰 香港节点,
          🇯🇵 日本节点,
          🇸🇬 狮城节点,
          🇺🇲 美国节点,
          🌐 全部节点,
        ],
    }
  - {
      name: 🎵 TikTok,
      type: select,
      proxies:
        [
          ♻️ 美国自动,
          🔯 日本故转,
          🔯 狮城故转,
          🔯 美国故转,
          🔯 香港故转,
          🔯 台湾故转,
          ♻️ 台湾自动,
          ♻️ 香港自动,
          ♻️ 日本自动,
          ♻️ 狮城自动,
          ♻️ 自动选择,
          🇺🇲 美国节点,
          🇭🇰 香港节点,
          🇯🇵 日本节点,
          🇸🇬 狮城节点,
          🌐 全部节点,
          直连,
        ],
    }
  - {
      name: 📲 Telegram,
      type: select,
      proxies:
        [
          🚀 默认代理,
          ♻️ 香港自动,
          ♻️ 自动选择,
          🔯 香港故转,
          🔯 日本故转,
          🔯 狮城故转,
          🔯 美国故转,
          🔯 台湾故转,
          ♻️ 台湾自动,
          ♻️ 日本自动,
          ♻️ 狮城自动,
          ♻️ 美国自动,
          🇭🇰 香港节点,
          🇯🇵 日本节点,
          🇸🇬 狮城节点,
          🇺🇲 美国节点,
          🌐 全部节点,
          直连,
        ],
    }
  - {
      name: 🎥 NETFLIX,
      type: select,
      proxies:
        [
          🇸🇬 狮城节点,
          ♻️ 狮城自动,
          🔯 狮城故转,
          🔯 香港故转,
          🔯 日本故转,
          🔯 美国故转,
          🔯 台湾故转,
          ♻️ 台湾自动,
          ♻️ 香港自动,
          ♻️ 日本自动,
          ♻️ 美国自动,
          ♻️ 自动选择,
          🇭🇰 香港节点,
          🇯🇵 日本节点,
          🇺🇲 美国节点,
          🌐 全部节点,
          直连,
        ],
    }
  - {
      name: 💶 PayPal,
      type: select,
      proxies:
        [
          ♻️ 美国自动,
          🔯 日本故转,
          🔯 香港故转,
          🔯 狮城故转,
          🔯 美国故转,
          🔯 台湾故转,
          ♻️ 台湾自动,
          ♻️ 香港自动,
          ♻️ 日本自动,
          ♻️ 狮城自动,
          ♻️ 自动选择,
          🇭🇰 香港节点,
          🇯🇵 日本节点,
          🇸🇬 狮城节点,
          🇺🇲 美国节点,
          🌐 全部节点,
          直连,
        ],
    }
  - {
      name: 🐟 漏网之鱼,
      type: select,
      proxies:
        [
          🚀 默认代理,
          直连,
          🌐 全部节点,
          🔯 香港故转,
          🔯 日本故转,
          🔯 狮城故转,
          🔯 美国故转,
          🔯 台湾故转,
          ♻️ 台湾自动,
          ♻️ 香港自动,
          ♻️ 日本自动,
          ♻️ 狮城自动,
          ♻️ 美国自动,
          ♻️ 自动选择,
          🇭🇰 香港节点,
          🇯🇵 日本节点,
          🇸🇬 狮城节点,
          🇺🇲 美国节点,
        ],
    }
  - {
      name: 🇭🇰 香港节点,
      type: select,
      include-all: true,
      filter: "(?i)港|hk|hongkong|hong kong",
    }
  - {
      name: 🇯🇵 日本节点,
      type: select,
      include-all: true,
      filter: "(?i)日|jp|japan",
    }
  - {
      name: 🇸🇬 狮城节点,
      type: select,
      include-all: true,
      filter: "(?i)新加坡|坡|狮城|SG|Singapore",
    }
  - {
      name: 🇺🇲 美国节点,
      type: select,
      include-all: true,
      filter: "(?i)美|us|unitedstates|united states",
    }
  - {
      name: 🔯 香港故转,
      type: fallback,
      include-all: true,
      tolerance: 20,
      interval: 300,
      filter: "(?=.*(港|HK|(?i)Hong))^((?!(台|日|韩|新|深|美)).)*$",
    }
  - {
      name: 🔯 日本故转,
      type: fallback,
      include-all: true,
      tolerance: 20,
      interval: 300,
      filter: "(?=.*(日|JP|(?i)Japan))^((?!(港|台|韩|新|美)).)*$",
    }
  - {
      name: 🔯 狮城故转,
      type: fallback,
      include-all: true,
      tolerance: 20,
      interval: 300,
      filter: "(?=.*(新加坡|坡|狮城|SG|Singapore))^((?!(台|日|韩|深|美)).)*$",
    }
  - {
      name: 🔯 美国故转,
      type: fallback,
      include-all: true,
      tolerance: 20,
      interval: 300,
      filter: "(?=.*(美|US|(?i)States|America))^((?!(港|台|韩|新|日)).)*$",
    }
  - {
      name: 🔯 台湾故转,
      type: fallback,
      include-all: true,
      tolerance: 20,
      interval: 300,
      filter: "(?=.*(台|TW|(?i)Taiwan))^((?!(港|日|韩|新|美)).)*$",
    }
  - {
      name: ♻️ 台湾自动,
      type: url-test,
      include-all: true,
      tolerance: 20,
      interval: 300,
      filter: "(?=.*(台|TW|(?i)Taiwan))^((?!(港|日|韩|新|美)).)*$",
    }
  - {
      name: ♻️ 香港自动,
      type: url-test,
      include-all: true,
      tolerance: 20,
      interval: 300,
      filter: "(?=.*(港|HK|(?i)Hong))^((?!(台|日|韩|新|深|美)).)*$",
    }
  - {
      name: ♻️ 日本自动,
      type: url-test,
      include-all: true,
      tolerance: 20,
      interval: 300,
      filter: "(?=.*(日|JP|(?i)Japan))^((?!(港|台|韩|新|美)).)*$",
    }
  - {
      name: ♻️ 狮城自动,
      type: url-test,
      include-all: true,
      tolerance: 20,
      interval: 300,
      filter: "(?=.*(新加坡|坡|狮城|SG|Singapore))^((?!(港|台|韩|日|美)).)*$",
    }
  - {
      name: ♻️ 美国自动,
      type: url-test,
      include-all: true,
      tolerance: 20,
      interval: 300,
      filter: "(?=.*(美|US|(?i)States|America))^((?!(港|台|日|韩|新)).)*$",
    }
  - {
      name: ♻️ 自动选择,
      type: url-test,
      include-all: true,
      tolerance: 20,
      interval: 300,
      exclude-filter: "(?i)拒绝|直连|2x|3x|4x|5x|10x",
    }
  - { name: 🌐 全部节点, type: select, include-all: true }

# 规则匹配
rules:
  - RULE-SET,ads_domain,拒绝
  - RULE-SET,private_ip,直连,no-resolve
  - IP-CIDR,192.168.0.0/16,直连,no-resolve
  - RULE-SET,private_domain,直连
  - RULE-SET,apple_domain,直连
  - RULE-SET,apple_ip,直连
  - RULE-SET,proxylite,🚀 默认代理
  - RULE-SET,ai,🤖 ChatGPT
  - RULE-SET,github_domain,👨🏿‍💻 GitHub
  - RULE-SET,youtube_domain,📹 YouTube
  - RULE-SET,google_domain,🍀 Google
  - RULE-SET,google_ip,🍀 Google
  - RULE-SET,onedrive_domain,🐬 OneDrive
  - RULE-SET,microsoft_domain,🪟 Microsoft
  - RULE-SET,tiktok_domain,🎵 TikTok
  - RULE-SET,telegram_domain,📲 Telegram
  - RULE-SET,netflix_domain,🎥 NETFLIX
  - RULE-SET,paypal_domain,💶 PayPal
  - RULE-SET,netflix_ip,🎥 NETFLIX
  - RULE-SET,telegram_ip,📲 Telegram
  - DOMAIN-SUFFIX,hybgzs.com,直连
  - RULE-SET,geolocation-!cn,🚀 默认代理
  - RULE-SET,cn_domain,直连
  - RULE-SET,cn_ip,直连
  - MATCH,🐟 漏网之鱼

# 规则集
rule-anchor:
  ip: &ip { type: http, interval: 86400, behavior: ipcidr, format: mrs }
  domain: &domain { type: http, interval: 86400, behavior: domain, format: mrs }
  class:
    &class { type: http, interval: 86400, behavior: classical, format: text }

rule-providers:
  ads_domain:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/category-ads-all.mrs",
    }
  private_domain:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/private.mrs",
    }
  proxylite:
    {
      <<: *class,
      url: "https://cdn.jsdelivr.net/gh/qichiyuhub/rule@main/proxy.list",
    }
  ai:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/category-ai-!cn.mrs",
    }
  youtube_domain:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/youtube.mrs",
    }
  google_domain:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/google.mrs",
    }
  github_domain:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/github.mrs",
    }
  telegram_domain:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/telegram.mrs",
    }
  netflix_domain:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/netflix.mrs",
    }
  paypal_domain:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/paypal.mrs",
    }
  onedrive_domain:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/onedrive.mrs",
    }
  microsoft_domain:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/microsoft.mrs",
    }
  apple_domain:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/apple.mrs",
    }
  speedtest_domain:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/ookla-speedtest.mrs",
    }
  tiktok_domain:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/tiktok.mrs",
    }
  private_ip:
    {
      <<: *ip,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geoip/private.mrs",
    }
  google_ip:
    {
      <<: *ip,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geoip/google.mrs",
    }
  telegram_ip:
    {
      <<: *ip,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geoip/telegram.mrs",
    }
  netflix_ip:
    {
      <<: *ip,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geoip/netflix.mrs",
    }
  apple_ip:
    {
      <<: *ip,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo-lite/geoip/apple.mrs",
    }
  geolocation-!cn:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/geolocation-!cn.mrs",
    }
  cn_domain:
    {
      <<: *domain,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geosite/cn.mrs",
    }
  cn_ip:
    {
      <<: *ip,
      url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo/geoip/cn.mrs",
    }
