تست URL: افزودههای هیدیفای
گروه تست URL ("type": "urltest") عضوهایش را میآزماید و ترافیک را از سریعترین آنها میفرستد.
هیدیفای، به پیروی از sing-box-lx، چند URL آزمون، حالت failover و واکنش به اتصالهای ناموفق را به آن
اضافه میکند.
چرا از آن استفاده کنیم
- ممکن است یک URL آزمون در بعضی شبکهها مسدود باشد. با چند URL، عضوی که کار میکند به خاطر آن مرده حساب نمیشود.
- نسخهٔ اصلی فقط به آزمونها واکنش نشان میدهد: وقتی عضو انتخابشده از کار میافتد، اتصالها تا آزمون
بعدی، یعنی تا
intervalبعد، شکست میخورند. هیدیفای با اولین اتصال ناموفق به عضو دیگری میرود. failoverیک عضو را تا وقتی کار میکند نگه میدارد، پس نشانی خروجی شما هر چند دقیقه عوض نمیشود، و در هر بازه فقط یک عضو را میآزماید، نه همه را.
چطور از فیلترینگ عبور میکند
عبور نمیکند. میان outboundهایی که عبور میکنند انتخاب میکند و زودتر میفهمد کدام مسدود شده است.
چطور کار میکند
URLهای آزمون. هر عضو همزمان با url و همهٔ موارد urls آزموده میشود. اولین URLی که پاسخ دهد
تأخیر را تعیین میکند. عضو فقط وقتی از کار افتاده است که هیچکدام پاسخ ندهند.
اتصالهای ناموفق. وقتی اتصالی از یک عضو به این دلیل شکست میخورد که مسیر مرده است (پایان مهلت، یا دسترسناپذیر بودن شبکه یا میزبان):
- آن عضو یک جریمه میگیرد.
- گروه اتصال را یک بار دیگر، از بهترین عضو دیگر، امتحان میکند. اگر کار کند، گروه آن را انتخاب میکند. اتصالهای زنده بسته نمیشوند.
- اگر تلاش دوم هم شکست بخورد، خطای اول به برنامه برمیگردد، ولی انتخاب از قبل جابهجا شده است، پس تلاش دوبارهٔ خود برنامه از راه دیگری میرود.
اتصالی که رد یا reset شود جریمه و تلاش دوم ندارد: مقصد آن را رد کرده و عضو دیگر هم همان پاسخ را میگیرد. اتصالی که خود برنامه لغو کرده هم جریمه ندارد.
جریمه فقط با اثبات کار کردن عضو پاک میشود: اتصال یا آزمونی موفق از آن. با گذشت زمان از بین نمیرود.
وقتی سریعترین عضو ۳ جریمه دارد، عضوها اول بر اساس جریمه و بعد بر اساس تأخیر رتبهبندی میشوند. وقتی همهٔ عضوهایی که نتیجهٔ آزمون دارند ۳ جریمه داشته باشند، همهٔ عضوها فوراً آزموده میشوند، حداکثر هر ۲ دقیقه یک بار، از پایان آزمون قبلی از این نوع.
حالت failover.
- انتخاب اول سریعترین عضو است.
- در هر
intervalفقط عضو انتخابشده آزموده میشود (عضو TCP، و اگر فرق داشته باشد عضو UDP). تا وقتی پاسخ میدهد انتخابشده میماند، حتی اگر عضو دیگری سریعتر باشد. - مگر اینکه کند شده باشد: وقتی بیش از ۲ برابر از سریعترین عضو دیگر کندتر باشد (بر اساس آخرین نتایجشان)، یک بار دیگر آزموده میشود. اگر هنوز همانقدر کند باشد، همهٔ عضوها آزموده میشوند و گروه وقتی جابهجا میشود که عضوی بیش از ۱٫۵ برابر سریعتر باشد.
- وقتی شکست بخورد، همهٔ عضوها آزموده میشوند و سریعترین انتخاب میشود.
- آزمون دستی همهٔ عضوها را میآزماید و سریعترین را انتخاب میکند.
toleranceاثری ندارد.
پیکربندی
{
"type": "urltest",
"tag": "auto",
"outbounds": ["proxy-a", "proxy-b", "proxy-c"],
"url": "https://www.gstatic.com/generate_204",
"urls": ["https://cp.cloudflare.com/", "http://connectivitycheck.platform.hicloud.com/generate_204"],
"mode": "failover",
"interval": "3m"
}
| فیلد | نوع | پیشفرض | معنی |
|---|---|---|---|
urls |
list of strings | URLهای آزمون بیشتر. عضو وقتی سالم است که هر یک از url و urls پاسخ دهد. |
|
mode |
string | "" |
failover عضو انتخابشده را تا وقتی شکست نخورده نگه میدارد. خالی در هر آزمون سریعترین را انتخاب میکند. |
فیلدهای دیگر همان فیلدهای نسخهٔ اصلیاند: outbounds، url، interval، tolerance، idle_timeout،
interrupt_exist_connections. جریمهها در هر دو حالت اعمال میشوند و گزینهای ندارند.
حالت round_robin از lx اضافه نشده است: گروه balancer آن را پوشش میدهد.