URI Scheme
URI-схема Hysteria 2 предназначена для компактного представления информации, необходимой для подключения к серверу Hysteria 2. Она охватывает различные параметры: адрес сервера, данные аутентификации, тип и параметры обфускации, настройки TLS.
Структура
Компоненты
Схема
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.
Структура
Компоненты адреса соответствуют URI realm://, а не hysteria2://:
- Схема:
hysteria2+realmиспользует HTTPS.hysteria2+realm+httpиспользует обычный HTTP. - Token: компонент userinfo — это токен сервера рандеву, а НЕ пароль Hysteria (см. параметр
authниже). - Hostname: адрес сервера рандеву, а НЕ сервера Hysteria. Формат смены портов пока не поддерживается.
- Имя realm: компонент пути. Сервер и клиент должны использовать одно и то же имя.
Параметры
Применяются все параметры запроса hysteria2:// (obfs, obfs-password, sni, insecure, pinSHA256), плюс:
-
auth: Учётные данные аутентификации Hysteria. (В схемеhysteria2://они находятся в компоненте userinfo, но здесь userinfo занят токеном realm.) -
stun: Переопределить STUN-серверы. Повторите параметр, чтобы указать несколько серверов. -
lport: Привязать локальный UDP-сокет к конкретному исходному порту (1-65535). По умолчанию — эфемерный.
Пример
hysteria2+realm://mytoken@rendezvous.example.com/my-cabin-1f3a8c2e9b?auth=your_password&insecure=1&pinSHA256=deadbeef
Замечания по реализации
URI намеренно разработан так, чтобы содержать только основную информацию, необходимую для подключения к серверу Hysteria 2. Хотя сторонние реализации могут добавлять дополнительные параметры при необходимости, они не должны предполагать, что другие реализации их поймут.
Кроме того, параметры никогда не должны включать клиентские режимы (HTTP, SOCKS5 и т.д.) или значения полосы пропускания. Пользователи должны знать, что эти вещи не предназначены для передачи и слепого использования другими, так как они специфичны для каждого пользователя и должны настраиваться индивидуально.