هدف اصلی این Issue، رفع سه مشکل اساسی در فرآیند انتخاب کانفیگ و مدیریت امنیت اونه. در نسخه فعلی hiddify-app، انتخاب خودکار فقط بر اساس پینگ (تأخیر) انجام میشه و اطلاعات کافی و شفافی از وضعیت امنیتی کانفیگها ارائه نمیشه.
مشکل ها
مشکل شماره ۱: انتخاب کانفیگ صرفاً بر اساس پینگ:
فرض می کنیم کاربر روی حالت بالانس Round robin یک ساب رو فعال می کنه، بیشتر وقت ها به کانفیگی وصل میشه که شاید پینگی بسیار خوب داره ولی حتی قادر به بازگردن یک عکس در اینستاگرام هم نیست.
کاربر باید بصورت دستی بین کانفیگ های مختلف که اطلاعاتی جز نام هم ندارند ( گاهی نام های تکراری هم دیده میشه ) سویج بکنه که شاید بتونه وصل بمونه.
مشکل شماره ۲: عدم شفافیت امنیتی:
کاربر از وضعیت رمزگذاری، فعال بودن TLS، نوع Flow، و وضعیت uTLS در کانفیگ اطلاعی نداره. این موضوع برای کاربرانی که به امنیت ترافیک اهمیت میدن (روزنامهنگارا، فعالان مدنی و ...) بسیار حیاتی.
مشکل شماره ۳ : عدم امکان ویرایش مجزای کانفیگ
این مشکل تاحدی به مشکل ۲ و ۱ برمی گرده
وقتی داخل یک اشتراک یا ساب به یک کانفیگ خاص وصل میشیم هیچ دکمه ای برای ویرایش اون کانفیگ خاص وجود نداره و این باعث میشه کاربر نتونه حالت های مختلف رو روی اون کانفیگ خاص تست بکنه یا حتی مشخصاتش رو ببینه.
راهکارها
راهکار برای مشکل شماره ۱ (انتخاب فقط بر اساس پینگ)
به نظر من Hiddify باید دیگه فقط به پینگ اکتفا نکنه. پیشنهاد من اینه که تست سرعت واقعی هم اضافه بشه. یعنی یه فرآیند سه مرحلهای:
- مرحله اول – فیلتر پینگ: اول همه کانفیگهایی که پینگشون از یه حدی بالاست (مثلاً بیشتر از ۲۵۰ میلیثانیه) رو کنار بذاریم.
- مرحله دوم – تست سرعت: از بین بقیه، یه فایل کوچیک (مثلاً ۱ یا ۲ مگابایت) دانلود کنه و سرعت واقعی هر کانفیگ رو اندازه بگیره.
- مرحله سوم – اتصال به پرسرعتترین: نهایتاً به کانفیگی وصل بشه که بیشترین سرعت دانلود رو داره، حتی اگه پینگش چند میلیثانیه بیشتر باشه.
علاوه بر این، Hiddify میتونه یاد بگیره که کدوم پروتکل و تنظیمات توی شبکه هر کاربر جواب میده. مثلاً برای من روی ایرانسل، ترکیب Hysteria2 + TLS عالیه، اما برای یکی دیگه روی همراه اول، VLESS + gRPC بهتره. اگه نرمافزار این رو به خاطر بسپاره، دفعه بعد خیلی سریعتر بهترین کانفیگ رو پیدا میکنه. این اطلاعات فقط روی دستگاه خود کاربر بمونه و به جایی ارسال نشه.
راهکار برای مشکل شماره ۲ (عدم شفافیت امنیتی)
بیا صاف بگیم. خیلی از ماها وقتی به یه کانفیگ وصل میشیم، فقط میبینیم «VLESS» یا «Hysteria2» نوشته شده. اما هیچکس به ما نمیگه که این کانفیگ واقعاً امن هست یا نه. آیا ترافیک من رمزگذاری میشه؟ TLS داره یا نه؟ از چه ورژنی استفاده میکنه؟ اون «Flow» عجیب توش فعاله یا فقط یه اسم الکی روش زدن؟
این برای خیلی از کاربرا مهمه، مخصوصاً اونایی که توی شرایط حساس هستن. یه کانفیگ بدون TLS مثلاً مثل این میمونه که توی خیابون با صدای بلند رمز وردتون رو بگید. کسی که به امنیت فکر میکنه، باید بتونه با یه نگاه بفهمه داره از چه کلاهی استفاده میکنه.
پیشنهاد من اینه که Hiddify یه پنل ساده و تمیز برای هر کانفیگ درست کنه، جایی که این چیزا رو به زبان خودمون نشون بده:
- وضعیت TLS: مثلاً بنویسه «فعال» و یه قفل سبز بذاره کنارش، یا «غیرفعال» با قفل قرمز.
- نسخه TLS: مثلاً «TLS 1.3» یا «TLS 1.2». هرچی نسخه جدیدتر باشه، امنتره.
- نوع Flow: اگر از XTLS استفاده میکنه، بنویسه مثلاً
xtls-rprx-vision. اگر نه، بنویسه «ندارد».
- uTLS: بنویسه «فعال» یا «غیرفعال». این اون قابلیتیه که اثر انگشت مرورگر رو جعل میکنه تا فیلترشکن رو قاطی مرورگر معمولی نزنن.
- سطح امنیت کلی: یه نمره یا رنگ بده: سبز برای امنیت خوب (TLS 1.3 + Flow مناسب)، زرد برای متوسط (TLS 1.2 بدون Flow خاص)، قرمز برای ناایمن (بدون TLS).
این اطلاعات رو میشه توی صفحه جزئیات کانفیگ یا حتی کنار نام هر کانفیگ توی لیست اصلی (با یه آیکون کوچیک) نشون داد. مثلاً کنار اسم کانفیگ، یه قفل سبز بذاره که یعنی «این یکی امنه»، یا قرمز که یعنی «هشدار، این رمزنگاری نداره».
کاربر معمولی با دیدن این رنگها و توضیحات ساده میفهمه که کدوم کانفیگ رو انتخاب کنه. کاربر حرفهای هم میتونه دقیقتر ببینه که تنظیمات فنی چی هست.
اینطوری دیگه هیچکس بدون اطلاع به یه کانفیگ بدون امنیت وصل نمیشه، و اونایی که امنیت براشون اولویت اول هست، خیالشون راحت میشه.
راهکار برای مشکل شماره ۳ (عدم امکان ویرایش مجزای کانفیگ)
خب برسیم به مورد سوم که شاید از همه آزاردهندهتره. فرض کن یه ساباسکریپشن داری با کلی کانفیگ. یکی شون رو انتخاب میکنی، اما میبینی یه چیزی توش درست نیست. مثلاً TLS نداره، یا Flowش قدیمیه، یا میخوای SNI رو عوض کنی تا بهتر کار کنه. چی کار میتونی بکنی؟ هیچی. نه میتونی ببینی داخلش چیه، نه میتونی یه دکمه بزنی و تغییرش بدی. تنها راه اینه که بری یه اپ دیگه یا ادیتور، لینک رو باز کنی، کلی بگردی، و بعد ... اصلاً عملاً غیرممکنه.
این باعث میشه کلی از پتانسیل کانفیگها از دست بره. خیلی وقتا یه کانفیگ با یه تغییر کوچیک (مثل فعال کردن TLS یا عوض کردن Flow) میتونه عالی کار کنه، ولی چون کاربر نمیتونه دستکاریش کنه، مجبوره بیخیالش بشه.
پیشنهاد من سادهست: یه دکمه ویرایش برای هر کانفیگ توی منوی سهنقطه یا راستکلیک. وقتی کاربر روش کلیک کنه، یه صفحه باز بشه که توش بتونه تنظیمات اون کانفیگ خاص رو ببیند و عوض کند. بدون اینکه به بقیه کانفیگهای اون اشتراک یا خود لینک اصلی آسیبی برسه.
این صفحه ویرایش باید دو تا حالت داشته باشه تا هم به درد تازهکار بخوره هم به درد حرفهای:
حالت ساده (برای همه):
چنتا فیلد معروف و پرکاربرد رو به صورت کشویی یا چکباکس نشون بده. مثلاً:
- امنیت (TLS): روشن/خاموش
- نوع Flow:
none، xtls-rprx-vision، xtls-rprx-vision-udp443
- SNI: یه کادر برای نوشتن آدرس دلخواه
- اثر انگشت (fingerprint): random، Chrome، Firefox
کاربر هر کدوم رو که عوض کنه، برنامه به صورت خودکار اون تغییر رو روی همون کانفیگ اعمال میکنه.
حالت پیشرفته (برای حرفهایها):
یه ویرایشگر JSON بده که کل ساختار اون کانفیگ رو نشون بده. هر چی دوس داره دستکاری کنه. البته قبل از ذخیره یه بررسی کنه که JSON درست باشه تا برنامه کرش نکنه.
نکته خیلی مهم: این تغییرات فقط مال همون کانفیگ هست و روی جای دیگه تأثیر نمیذاره. حتی بعد از اینکه ساباسکریپشن آپدیت شد (یعنی سرور لیست جدیدی فرستاد)، Hiddify باید یادش باشه که این کانفیگ خاص رو کاربر دستکاری کرده و دوباره تغییرات رو روش اعمال کنه.
یک پیشنهاد اضافه: میشه به کاربر این امکان رو داد که نسخه ادیت شده رو در کنار نسخه اصلی نگه داره، یا حتی یک کانفیگ خاص رو از داخل ساب حذف کنه (مخفی کنه) بدون اینکه از ساب اصلی حذف بشه.
این قابلیت چند تا مشکل رو یکجا حل میکنه:
- کاربر میتونه کانفیگهای بدون امنیت رو خودش امن کنه (مثلاً به یه کانفیگ VLESS بدون TLS، TLS اضافه کنه).
- میتونه تنظیمات بهتری مثل Flow جدید رو تست کنه بدون اینکه منتظر بمونه تا مدیر ساب آپدیتش کنه.
- میتونه کانفیگهای تکراری یا با نامهای گنگ رو برچسب بزنه یا حداقل ببینه داخلشون چیه.
خلاصه اینکه: کنترل واقعی دست کاربر باشه. نه اینکه هر بار به تنظیمات یک کانفیگ نیاز پیدا کرد، بره دنبال یه نرمافزار دیگه یا لینک رو توی مرورگر باز کنه. Hiddify میتونه خودش این کار رو انجام بده، و خیلی هم راحت.
هدف اصلی این Issue، رفع سه مشکل اساسی در فرآیند انتخاب کانفیگ و مدیریت امنیت اونه. در نسخه فعلی
hiddify-app، انتخاب خودکار فقط بر اساس پینگ (تأخیر) انجام میشه و اطلاعات کافی و شفافی از وضعیت امنیتی کانفیگها ارائه نمیشه.مشکل ها
مشکل شماره ۱: انتخاب کانفیگ صرفاً بر اساس پینگ:
فرض می کنیم کاربر روی حالت بالانس
Round robinیک ساب رو فعال می کنه، بیشتر وقت ها به کانفیگی وصل میشه که شاید پینگی بسیار خوب داره ولی حتی قادر به بازگردن یک عکس در اینستاگرام هم نیست.کاربر باید بصورت دستی بین کانفیگ های مختلف که اطلاعاتی جز نام هم ندارند ( گاهی نام های تکراری هم دیده میشه ) سویج بکنه که شاید بتونه وصل بمونه.
مشکل شماره ۲: عدم شفافیت امنیتی:
کاربر از وضعیت رمزگذاری، فعال بودن
TLS، نوعFlow، و وضعیتuTLSدر کانفیگ اطلاعی نداره. این موضوع برای کاربرانی که به امنیت ترافیک اهمیت میدن (روزنامهنگارا، فعالان مدنی و ...) بسیار حیاتی.مشکل شماره ۳ : عدم امکان ویرایش مجزای کانفیگ
این مشکل تاحدی به مشکل ۲ و ۱ برمی گرده
وقتی داخل یک اشتراک یا ساب به یک کانفیگ خاص وصل میشیم هیچ دکمه ای برای ویرایش اون کانفیگ خاص وجود نداره و این باعث میشه کاربر نتونه حالت های مختلف رو روی اون کانفیگ خاص تست بکنه یا حتی مشخصاتش رو ببینه.
راهکارها
راهکار برای مشکل شماره ۱ (انتخاب فقط بر اساس پینگ)
به نظر من
Hiddifyباید دیگه فقط به پینگ اکتفا نکنه. پیشنهاد من اینه که تست سرعت واقعی هم اضافه بشه. یعنی یه فرآیند سه مرحلهای:علاوه بر این،
Hiddifyمیتونه یاد بگیره که کدوم پروتکل و تنظیمات توی شبکه هر کاربر جواب میده. مثلاً برای من روی ایرانسل، ترکیبHysteria2 + TLSعالیه، اما برای یکی دیگه روی همراه اول،VLESS + gRPCبهتره. اگه نرمافزار این رو به خاطر بسپاره، دفعه بعد خیلی سریعتر بهترین کانفیگ رو پیدا میکنه. این اطلاعات فقط روی دستگاه خود کاربر بمونه و به جایی ارسال نشه.راهکار برای مشکل شماره ۲ (عدم شفافیت امنیتی)
بیا صاف بگیم. خیلی از ماها وقتی به یه کانفیگ وصل میشیم، فقط میبینیم «VLESS» یا «Hysteria2» نوشته شده. اما هیچکس به ما نمیگه که این کانفیگ واقعاً امن هست یا نه. آیا ترافیک من رمزگذاری میشه؟ TLS داره یا نه؟ از چه ورژنی استفاده میکنه؟ اون «Flow» عجیب توش فعاله یا فقط یه اسم الکی روش زدن؟
این برای خیلی از کاربرا مهمه، مخصوصاً اونایی که توی شرایط حساس هستن. یه کانفیگ بدون TLS مثلاً مثل این میمونه که توی خیابون با صدای بلند رمز وردتون رو بگید. کسی که به امنیت فکر میکنه، باید بتونه با یه نگاه بفهمه داره از چه کلاهی استفاده میکنه.
پیشنهاد من اینه که Hiddify یه پنل ساده و تمیز برای هر کانفیگ درست کنه، جایی که این چیزا رو به زبان خودمون نشون بده:
xtls-rprx-vision. اگر نه، بنویسه «ندارد».این اطلاعات رو میشه توی صفحه جزئیات کانفیگ یا حتی کنار نام هر کانفیگ توی لیست اصلی (با یه آیکون کوچیک) نشون داد. مثلاً کنار اسم کانفیگ، یه قفل سبز بذاره که یعنی «این یکی امنه»، یا قرمز که یعنی «هشدار، این رمزنگاری نداره».
کاربر معمولی با دیدن این رنگها و توضیحات ساده میفهمه که کدوم کانفیگ رو انتخاب کنه. کاربر حرفهای هم میتونه دقیقتر ببینه که تنظیمات فنی چی هست.
اینطوری دیگه هیچکس بدون اطلاع به یه کانفیگ بدون امنیت وصل نمیشه، و اونایی که امنیت براشون اولویت اول هست، خیالشون راحت میشه.
راهکار برای مشکل شماره ۳ (عدم امکان ویرایش مجزای کانفیگ)
خب برسیم به مورد سوم که شاید از همه آزاردهندهتره. فرض کن یه ساباسکریپشن داری با کلی کانفیگ. یکی شون رو انتخاب میکنی، اما میبینی یه چیزی توش درست نیست. مثلاً TLS نداره، یا Flowش قدیمیه، یا میخوای SNI رو عوض کنی تا بهتر کار کنه. چی کار میتونی بکنی؟ هیچی. نه میتونی ببینی داخلش چیه، نه میتونی یه دکمه بزنی و تغییرش بدی. تنها راه اینه که بری یه اپ دیگه یا ادیتور، لینک رو باز کنی، کلی بگردی، و بعد ... اصلاً عملاً غیرممکنه.
این باعث میشه کلی از پتانسیل کانفیگها از دست بره. خیلی وقتا یه کانفیگ با یه تغییر کوچیک (مثل فعال کردن TLS یا عوض کردن Flow) میتونه عالی کار کنه، ولی چون کاربر نمیتونه دستکاریش کنه، مجبوره بیخیالش بشه.
پیشنهاد من سادهست: یه دکمه ویرایش برای هر کانفیگ توی منوی سهنقطه یا راستکلیک. وقتی کاربر روش کلیک کنه، یه صفحه باز بشه که توش بتونه تنظیمات اون کانفیگ خاص رو ببیند و عوض کند. بدون اینکه به بقیه کانفیگهای اون اشتراک یا خود لینک اصلی آسیبی برسه.
این صفحه ویرایش باید دو تا حالت داشته باشه تا هم به درد تازهکار بخوره هم به درد حرفهای:
حالت ساده (برای همه):
چنتا فیلد معروف و پرکاربرد رو به صورت کشویی یا چکباکس نشون بده. مثلاً:
none،xtls-rprx-vision،xtls-rprx-vision-udp443کاربر هر کدوم رو که عوض کنه، برنامه به صورت خودکار اون تغییر رو روی همون کانفیگ اعمال میکنه.
حالت پیشرفته (برای حرفهایها):
یه ویرایشگر JSON بده که کل ساختار اون کانفیگ رو نشون بده. هر چی دوس داره دستکاری کنه. البته قبل از ذخیره یه بررسی کنه که JSON درست باشه تا برنامه کرش نکنه.
نکته خیلی مهم: این تغییرات فقط مال همون کانفیگ هست و روی جای دیگه تأثیر نمیذاره. حتی بعد از اینکه ساباسکریپشن آپدیت شد (یعنی سرور لیست جدیدی فرستاد)، Hiddify باید یادش باشه که این کانفیگ خاص رو کاربر دستکاری کرده و دوباره تغییرات رو روش اعمال کنه.
یک پیشنهاد اضافه: میشه به کاربر این امکان رو داد که نسخه ادیت شده رو در کنار نسخه اصلی نگه داره، یا حتی یک کانفیگ خاص رو از داخل ساب حذف کنه (مخفی کنه) بدون اینکه از ساب اصلی حذف بشه.
این قابلیت چند تا مشکل رو یکجا حل میکنه:
خلاصه اینکه: کنترل واقعی دست کاربر باشه. نه اینکه هر بار به تنظیمات یک کانفیگ نیاز پیدا کرد، بره دنبال یه نرمافزار دیگه یا لینک رو توی مرورگر باز کنه. Hiddify میتونه خودش این کار رو انجام بده، و خیلی هم راحت.