From 482749c9669762ec91e8d08646215684ebbde76b Mon Sep 17 00:00:00 2001 From: Ivan Razin Date: Wed, 24 Jun 2026 20:07:33 +0300 Subject: [PATCH] Fix proxy-provider bypass: use ?provider=1 param instead of custom header Custom header X-Proxy-Provider is not sent by ClashMi and other clients that don't support header: in proxy-providers. URL query param works in all clients universally. Co-Authored-By: Claude Sonnet 4.6 --- assets/clash/clash.yaml | 5 +---- x-ui-latest.sh | 6 +++--- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/assets/clash/clash.yaml b/assets/clash/clash.yaml index 0a9019e..c4f2dbf 100644 --- a/assets/clash/clash.yaml +++ b/assets/clash/clash.yaml @@ -53,12 +53,9 @@ dns: proxy-providers: sub: type: http - url: https://${DOMAIN}/${SUB_PATH}/${SUB_ID} + url: https://${DOMAIN}/${SUB_PATH}/${SUB_ID}?provider=1 path: ./proxy_providers/base64.yml interval: 3600 - header: - X-Proxy-Provider: - - "true" health-check: enable: true url: https://www.gstatic.com/generate_204 diff --git a/x-ui-latest.sh b/x-ui-latest.sh index 8120e66..21c0994 100644 --- a/x-ui-latest.sh +++ b/x-ui-latest.sh @@ -417,9 +417,9 @@ map \$http_user_agent \$is_clash_ua { ~*(clash|clashx|clashn|mihomo|stash|surfboard) 1; default 0; } -# Serve clash.yaml only when: Clash UA AND no X-Proxy-Provider header -# (proxy-provider refresh requests carry X-Proxy-Provider: true and must get the real sub) -map "\$is_clash_ua:\$http_x_proxy_provider" \$serve_clash_yaml { +# Serve clash.yaml only when: Clash UA AND no ?provider=1 query param +# (proxy-provider refresh requests add ?provider=1 and must get the real sub) +map "\$is_clash_ua:\$arg_provider" \$serve_clash_yaml { "1:" 1; default 0; }