Перейти к содержанию

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 — это токен сервера рандеву, а НЕ пароль 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 и т.д.) или значения полосы пропускания. Пользователи должны знать, что эти вещи не предназначены для передачи и слепого использования другими, так как они специфичны для каждого пользователя и должны настраиваться индивидуально.