پرش به محتویات

URI Scheme

طرح URI در Hysteria 2 برای ارائه یک نمایش فشرده از اطلاعات لازم برای اتصال به سرور Hysteria 2 طراحی شده است. این طرح پارامترهای مختلفی مانند آدرس سرور، جزئیات احراز هویت، نوع و پارامترهای مبهم‌سازی و تنظیمات TLS را در بر می‌گیرد.

ساختار

hysteria2://[auth@]hostname[:port]/?[key=value]&[key=value]...

اجزا

طرح

hysteria2 یا hy2

Auth

اعتبارنامه‌های احراز هویت باید در بخش auth از URI مشخص شوند. این بخش اساساً قسمت نام کاربری در قالب استاندارد URI است و بنابراین در صورت حاوی کاراکترهای خاص نیاز به کدگذاری درصدی دارد.

یک حالت خاص زمانی است که سرور از احراز هویت userpass استفاده می‌کند، که در این صورت بخش auth باید به صورت username:password قالب‌بندی شود.

Hostname

نام میزبان و پورت اختیاری سرور. اگر پورت حذف شود، مقدار پیش‌فرض 443 است.

بخش پورت از قالب «چندپورتی» ذکرشده در پرش بین پورت‌ها پشتیبانی می‌کند.

پارامترهای پرس‌وجو

  • obfs: نوع مبهم‌سازی مورد استفاده. در حال حاضر salamander و gecko پشتیبانی می‌شوند.

  • obfs-password: رمز عبور مورد نیاز برای نوع مبهم‌سازی مشخص‌شده، در صورت وجود.

  • sni: Server Name Indication برای اتصالات TLS.

  • insecure: تعیین می‌کند که آیا اتصالات TLS ناامن مجاز هستند. مقادیر بولی «1» برای true و «0» برای false را قبول می‌کند.

  • pinSHA256: اثر انگشت SHA-256 پین‌شده گواهی سرور.

مثال

hysteria2://letmein@example.com:123,5000-6000/?insecure=1&obfs=salamander&obfs-password=gawrgura&pinSHA256=deadbeef&sni=real.example.com

حالت Realm

Hysteria Realms معمولاً از URI مخصوص خود یعنی realm:// استفاده می‌کند و رمز Hysteria به‌طور جداگانه در فایل پیکربندی ارائه می‌شود. طرح hysteria2+realm:// آدرس realm را همراه با پارامترهای اتصال Hysteria در یک جا قرار می‌دهد تا بتوان یک سرور در حالت realm را با یک URI واحد به اشتراک گذاشت.

ساختار

hysteria2+realm://<token>@<rendezvous-host>[:port]/<realm-name>?[key=value]&[key=value]...

اجزای آدرس مطابق URI realm:// هستند، نه hysteria2://:

  • طرح: hysteria2+realm از HTTPS استفاده می‌کند. hysteria2+realm+http از HTTP ساده استفاده می‌کند.
  • Token: بخش userinfo، توکن سرور rendezvous است، نه رمز Hysteria (به پارامتر auth در ادامه مراجعه کنید).
  • Hostname: آدرس سرور rendezvous، نه سرور Hysteria. قالب پرش بین پورت‌ها فعلاً پشتیبانی نمی‌شود.
  • نام realm: بخش مسیر (path). سرور و کلاینت باید از نام یکسانی استفاده کنند.

پارامترها

همهٔ پارامترهای پرس‌وجوی hysteria2:// اعمال می‌شوند (obfs، obfs-password، sni، insecure، pinSHA256به‌علاوهٔ:

  • auth: اعتبارنامه‌های احراز هویت Hysteria. (در طرح hysteria2:// این مقدار در بخش userinfo قرار دارد، اما اینجا userinfo توسط توکن realm اشغال شده است.)

  • stun: جایگزینی سرورهای STUN. برای مشخص کردن چند سرور، این پارامتر را تکرار کنید.

  • lport: اتصال سوکت محلی UDP به یک پورت مبدأ مشخص (1-65535). پیش‌فرض، پورت موقت (ephemeral) است.

مثال

hysteria2+realm://mytoken@rendezvous.example.com/my-cabin-1f3a8c2e9b?auth=your_password&insecure=1&pinSHA256=deadbeef

نکات پیاده‌سازی

URI عمداً طوری طراحی شده که فقط شامل اطلاعات ضروری مورد نیاز برای اتصال به سرور Hysteria 2 باشد. اگرچه پیاده‌سازی‌های شخص ثالث آزادند در صورت نیاز پارامترهای اضافی اضافه کنند، اما نباید فرض کنند که پیاده‌سازی‌های دیگر آن‌ها را درک خواهند کرد.

علاوه بر این، پارامترها هرگز نباید شامل حالت‌های کلاینت (HTTP، SOCKS5 و غیره) یا مقادیر پهنای باند باشند. کاربران باید بدانند که این موارد برای اشتراک‌گذاری و استفاده کورکورانه توسط دیگران در نظر گرفته نشده‌اند، زیرا مختص هر کاربر بوده و باید بر اساس نیاز پیکربندی شوند.