گروههای پراکسی — mihomo
گروههای پراکسی بستههای نامدار پراکسیها / دیگر گروهها هستند که بهعنوان یک خروجی نامدار واحد عمل میکنند. mihomo چهار نوع گروه ارائه میدهد: select (دستی)، url-test (خودکار مبتنی بر تأخیر)، fallback (ترتیبی مبتنی بر سلامت) و load-balance (توزیع ترافیک).
گزینههای مشترک
هر نوع گروه پایهٔ مشترک GroupCommonOption را حمل میکند. تگ group:"..." ساختار، مخصوص خود mihomo است — کلیدهای YAML با تگ مطابقت دارند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (required) | <string> | نام منحصربهفرد گروه. از طریق قواعد و دیگر گروهها به آن ارجاع میشود. |
type | string | (required) | select | url-test | fallback | load-balance | نوع گروه. `relay` حذف شد — بهجای آن از `dialer-proxy` روی ورودی پراکسی استفاده کنید. |
proxies | []string | [] | [<proxy or group name>] | لیست صریح اعضا. برای عضویت مبتنی بر تأمینکننده از `use:` استفاده کنید. |
use | []string | [] | [<proxy-provider name>] | کشیدن اعضا از proxy-providerهای نامدار. |
url | string | (required for url-test/fallback) | <URL> | URL بررسی سلامت — یک GET دورهای روی این URL تأخیر اعضا را اندازهگیری میکند. معمول: `http://www.gstatic.com/generate_204`. |
interval | int | 300 | <seconds> | ثانیههای بین بررسیهای سلامت. |
timeout | int | 5000 | <milliseconds> | زمان انتظار بررسی سلامت بر حسب میلیثانیه. |
max-failed-times | int | 5 | <int> | تعداد شکستهای متوالی بررسی سلامت قبل از اینکه یک عضو از کار افتاده در نظر گرفته شود. |
lazy | bool | true | true | false | وقتی true باشد، بررسیهای سلامت تنها زمانی اجرا میشوند که گروه فعالانه در حال استفاده باشد. در گروههای در حالت آمادهباش پهنای باند صرفهجویی میکند. |
disable-udp | bool | false | true | false | ترافیک UDP را در این گروه رد میکند. وقتی همهٔ اعضا از UDP پشتیبانی نمیکنند مفید است. |
filter | string | (unset) | <regex> | <regex>`<regex>... | فیلتر regex اعمالشده روی نام اعضا. چند regex را میتوان با backtick جدا کرد. |
exclude-filter | string | (unset) | <regex> | فیلتر regex — هر عضوی را که نامش تطبیق دارد حذف میکند. |
exclude-type | string | (unset) | <proxy type> | حذف اعضای از نوعهای خاص (مثلاً `direct,ss`). |
expected-status | string | * | <HTTP status range> | کدهای وضعیت بررسی سلامت قابل قبول. `2xx` یا `200-204,301`. |
include-all | bool | false | true | false | گنجاندن خودکار همهٔ پراکسیها و تأمینکنندهها — از فهرستکردن دستی آنها صرفهجویی میکند. |
include-all-proxies | bool | false | true | false | گنجاندن خودکار همهٔ ورودیهای پراکسی (اما نه تأمینکنندهها). |
include-all-providers | bool | false | true | false | گنجاندن خودکار همهٔ proxy-providerها (اما نه پراکسیهای مستقیم). |
hidden | bool | false | true | false | گروه را از رابط کاربری داشبورد پنهان میکند. |
icon | string | (unset) | <URL> | URL آیکونی که توسط داشبوردهای سازگار نمایش داده میشود. |
منبع: adapter/outboundgroup/parser.go:25-45 · ثابتشده در v1.19.24 (a847246)
type: select
انتخاب دستی. گروه انتخاب فعلی خود را به Clash API آشکار میکند (داشبوردها به کاربران اجازهٔ سوییچ میدهند). بدون بررسی سلامت — عضو انتخابشده به همان شکل استفاده میشود.
proxy-groups:
- name: Manual
type: select
proxies: [Proxy-A, Proxy-B, Proxy-C, DIRECT]type: url-test
انتخاب خودکار سریعترین عضو از طریق پروبِ تأخیر URL دورهای. پروب هر interval ثانیه اجرا میشود؛ انتخاب فعال تنها زمانی تغییر میکند که عضو جدیدی بیش از tolerance میراثی سریعتر باشد (تجزیهشده توسط parseURLTestOption در adapter/outboundgroup/urltest.go:198-205).
proxy-groups:
- name: Auto
type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
timeout: 5000
tolerance: 50
proxies: [Proxy-JP, Proxy-US, Proxy-HK, Proxy-SG]گزینهٔ اضافی:
tolerance(int, میلیثانیه) — آستانهٔ سوییچ. پیشفرض ۰ است (همیشه به سریعترین مطلق سوییچ میکند، که میتواند نوسان ایجاد کند).
type: fallback
استفاده از اولین عضوی که پاسخ میدهد. اعضا به ترتیب اعلان از نظر سلامت بررسی میشوند؛ اولینی که زنده است تمام ترافیک را حمل میکند. برای الگوهای «اصلی + پشتیبان» مفید است.
proxy-groups:
- name: HA
type: fallback
url: http://www.gstatic.com/generate_204
interval: 60
timeout: 3000
max-failed-times: 3
proxies: [Primary, Backup, DIRECT]type: load-balance
توزیع ترافیک بین اعضا. فیلد strategy الگوریتم را انتخاب میکند:
| استراتژی | رفتار |
|---|---|
round-robin | چرخش بین اعضا به ترتیب. |
consistent-hashing | هش دامنهٔ مقصد — همان دامنه همیشه به همان عضو میرود. برای مسیریابی چسبان CDN مفید است. |
sticky-sessions | اولین اتصال از یک کلاینت یک عضو انتخاب میکند؛ اتصالات بعدی از همان کلاینت از آن دوباره استفاده میکنند. |
proxy-groups:
- name: Distributed
type: load-balance
url: http://www.gstatic.com/generate_204
interval: 300
strategy: consistent-hashing
proxies: [Proxy-1, Proxy-2, Proxy-3]type: relay — حذف شد
یک گروه زنجیرهای از پراکسیها بود. حذف شد؛ جایگزین آن فیلد dialer-proxy: در هر پراکسی است (برای مثال به Direct مراجعه کنید). پیکربندیهایی که هنوز type: relay را اعلان میکنند با خطای صریح هنگام راهاندازی شکست میخورند (adapter/outboundgroup/parser.go:187-188).
ابزارهای مجموعه-عضو
وقتی پراکسیهای زیادی دارید، فهرستکردن دستی آنها در هر گروه دردناک است. چهار پرچم include-all* بهعلاوهٔ filter / exclude-filter این مشکل را حل میکنند:
proxy-groups:
- name: All-JP
type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
include-all: true
filter: 'JP|Japan|🇯🇵'
exclude-type: 'direct,reject'این چهار پرچم بهتدریج بالا میروند:
include-all: trueخلاصهای برای هر دویinclude-all-proxiesوinclude-all-providers: trueاست.include-all-proxiesورودیهای موجود درproxies:را پوشش میدهد.include-all-providersورودیهای کشیدهشده از طریقproxy-providers:را پوشش میدهد.use:ساده به تأمینکنندههای نامدار بهصورت صریح ارجاع میدهد.
filter regexهای جداشده با backtick را میپذیرد — هر کدام یک OR است. بنابراین filter: 'JP`Japan`🇯🇵' با هر پراکسیای که نامش حاوی هر یک از این سه رشته باشد تطبیق دارد.
مثالها
یک پیکربندی چندلایهای معمول:
proxy-providers:
vendor1:
type: http
url: https://example.com/sub
interval: 86400
path: ./providers/vendor1.yaml
proxy-groups:
- name: 🚀 Proxy
type: select
proxies: [♻️ Auto, 🔯 Fallback, 🔮 LoadBalance, DIRECT]
- name: ♻️ Auto
type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50
use: [vendor1]
filter: '香港|新加坡|HK|SG'
- name: 🔯 Fallback
type: fallback
url: http://www.gstatic.com/generate_204
interval: 60
use: [vendor1]
filter: '日本|JP'
- name: 🔮 LoadBalance
type: load-balance
url: http://www.gstatic.com/generate_204
interval: 300
strategy: consistent-hashing
use: [vendor1]
- name: 🎬 Stream
type: select
include-all: true
filter: '美|US|🇺🇸'
rules:
- DOMAIN-SUFFIX,netflix.com,🎬 Stream
- MATCH,🚀 Proxyنکات بینهستهای
معادل sing-box — خروجیهای selector / urltest
sing-box همان ایده را بهصورت انواع خروجی و نه بهعنوان یک مفهوم جداگانهٔ «گروه» پیاده میکند:
{
"outbounds": [
{ "type": "selector",
"tag": "manual",
"outbounds": ["proxy-jp", "proxy-us", "direct"],
"default": "proxy-jp",
"interrupt_exist_connections": false },
{ "type": "urltest",
"tag": "auto",
"outbounds": ["proxy-jp", "proxy-us"],
"url": "https://www.gstatic.com/generate_204",
"interval": "3m",
"tolerance": 50 }
]
}Selector:
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
outbounds | []string | (required) | [<outbound tag>] | خروجیهای عضو. |
default | string | (first in outbounds) | <outbound tag> | انتخاب اولیه در زمان راهاندازی. |
interrupt_exist_connections | bool | false | true | false | وقتی انتخاب تغییر میکند، اتصالات در جریان که از عضو قبلی استفاده میکردند را میبندد. |
منبع: option/group.go:5-9 · ثابتشده در v1.13.11 (553cfa1)
URLTest:
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
outbounds | []string | (required) | [<outbound tag>] | خروجیهای عضو. |
url | string | https://www.gstatic.com/generate_204 | <URL> | URL بررسی سلامت. |
interval | badoption.Duration | 3m | <duration> | چقدر اعضا دوباره آزمایش شوند. |
tolerance | uint16 | 50 | <milliseconds> | تنها زمانی به عضو جدید سوییچ میکند که بیش از این تعداد میلیثانیه سریعتر باشد. از نوسان وقتی دو عضو تأخیر مشابهی دارند جلوگیری میکند. |
idle_timeout | badoption.Duration | 30m | <duration> | پس از این مدت از بیکاری، بررسی سلامت را متوقف میکند — در تقاضای بعدی از سر گرفته میشود. |
interrupt_exist_connections | bool | false | true | false | بستن اتصالات در جریان هنگام سوییچ. |
منبع: option/group.go:11-18 · ثابتشده در v1.13.11 (553cfa1)
sing-box معادل دقیقی برای گروههای fallback یا load-balance در mihomo ندارد. نزدیکترین الگو استفاده از urltest با tolerance بسیار محکم برای رفتاری مانند fallback، یا زنجیر کردن selectorها است.
معادل Xray — balancerها
balancers در Xray در صفحهٔ Routing مستند شدهاند. مقادیر استراتژی: random, roundRobin, leastPing, leastLoad. هیچ معادل Xray برای «selector» (انتخاب دستی) وجود ندارد — balancerها بر اساس استراتژی بهصورت خودکار مسیریابی میکنند.
