uTLS fingerprint: что это
- Автор
- Екатерина Лебедева, редактор раздела knowledge base
- Проверил:
- Артём Волков
- Проверено:
- Опубликовано:
- , обновлено
- Версия гайда:
- 1.0
Коротко
uTLS fingerprint — параметр fp у протоколов с TLS в Xray-core: он определяет, отпечаток ClientHello какого браузера или системы (chrome, firefox, safari и другие) воспроизведёт клиент при TLS-рукопожатии. В Happ указывается внутри ссылки, например vless://.
Стандартная библиотека TLS в языке Go, на котором написан Xray-core, формирует TLS-приветствие ClientHello с узнаваемым, всегда одинаковым набором расширений и порядком шифров — не таким, как у настоящих браузеров. Библиотека uTLS умеет вместо этого воспроизвести отпечаток конкретного браузера или системы: chrome, firefox, safari, ios, android и другие, а также случайный вариант random или randomized. Значение по умолчанию в Xray-core — chrome, а fp=unsafe возвращает обычную библиотеку Go без имитации. Для Reality параметр fp фактически обязателен, для обычного TLS — желателен.
uTLS fingerprint — параметр fp у протоколов с TLS в Xray-core, который задаёт, отпечаток TLS-приветствия ClientHello какого браузера или системы воспроизведёт библиотека uTLS при подключении клиента.
Суть термина
Каждая программа, которая устанавливает TLS-соединение, отправляет первым сообщением ClientHello — набор поддерживаемых версий TLS, шифров и расширений. Стандартная библиотека TLS в языке Go, на котором написан Xray-core, формирует такое сообщение по-своему, и его структура заметно отличается от того, что отправляют настоящие браузеры вроде Chrome или Firefox.
Библиотека uTLS умеет вместо этого воспроизводить отпечаток конкретного браузера или системы: порядок расширений, набор поддерживаемых шифров и другие детали ClientHello становятся такими же, как у выбранного образца. Параметр fp в ссылках Xray-core как раз выбирает этот образец.
По умолчанию Xray-core использует значение chrome. Значение unsafe отключает имитацию и возвращает обычную библиотеку Go TLS с её узнаваемой структурой ClientHello.
Какие значения принимает fp
| Значение | Что делает |
|---|---|
chrome (по умолчанию) | воспроизводит отпечаток свежей версии браузера Chrome |
firefox, safari, ios, android, edge | воспроизводят отпечаток соответствующего браузера или системы |
random | случайно выбирает один из отпечатков настоящих браузеров при каждом соединении |
randomized | генерирует полностью уникальный, не привязанный к конкретному браузеру набор |
unsafe | отключает uTLS, используется обычная библиотека Go TLS |
Точный список также включает отдельные версии браузеров вроде HelloChrome_106_Shuffle — они описаны в самой библиотеке uTLS и в документации Happ отдельно не приводятся.
Как это выглядит в Happ
Параметр fp приходит в составе ссылки или подписки, а не как отдельная настройка интерфейса.
vless://00000000-0000-0000-0000-000000000000@example.com:443?security=reality&pbk=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&sid=0123abcd&fp=chrome&sni=example.com&flow=xtls-rprx-vision&type=tcp#ExampleПри ручном вводе поле fp находится среди параметров TLS или Reality: кнопка «+» вверху справа → «Ручной ввод» → протокол VLESS или Trojan → заполнение полей → «Готово». Если значение указано неверно, само по себе оно редко приводит к отдельной ошибке — скорее к сбою TLS-рукопожатия, если сочетание параметров в целом не устроило сервер.
Чем fp отличается от похожих терминов
- SNI — какое доменное имя клиент называет серверу;
fp— как именно устроено само TLS-приветствие, в котором это имя передаётся. - Reality — способ, которым сервер работает без сертификата; параметр
fp— лишь часть того, что использует Reality для правдоподобного рукопожатия. - XTLS Vision — режим, который влияет на передачу данных после рукопожатия;
fpдействует только во время самого рукопожатия. - TLS — общий слой защиты;
fp— один из параметров, которые Xray-core использует при построении TLS-соединения через библиотеку uTLS.
Главное
- fp определяет отпечаток TLS-приветствия ClientHello, а не адрес сервера и не способ шифрования данных.
- Значение по умолчанию в Xray-core — chrome; fp=unsafe отключает имитацию и возвращает обычную библиотеку Go TLS.
- Кроме chrome, firefox и safari доступны ios, android, edge, 360, qq, а также random и randomized для случайного выбора отпечатка.
- Для Reality параметр fp фактически обязателен, потому что сервер ожидает узнаваемую форму TLS-рукопожатия.
- fp выбирает и меняет клиент самостоятельно: сервер не хранит для него отдельной настройки, в отличие от pbk, sid или sni.
Частые вопросы
Что случится, если вообще не указать параметр fp?
Xray-core применит значение по умолчанию — chrome, поэтому явно прописывать fp в ссылке не обязательно для обычного TLS. Для Reality пропуск параметра может привести к тому, что рукопожатие получится не таким, какого ожидает механизм проверки, поэтому там разумнее указывать fp явно, ориентируясь на то, что задал администратор сервера.
Чем отличаются значения random и randomized?
random выбирает отпечаток одного из настоящих современных браузеров случайным образом при каждом новом соединении. randomized генерирует полностью случайный, уникальный набор расширений и параметров, не совпадающий ни с одним реальным браузером. Первый вариант ближе к обычному трафику пользователей, второй даёт более непредсказуемую, но менее узнаваемую форму рукопожатия.
Можно ли использовать fp без TLS или Reality?
Нет смысла: параметр fp относится к TLS-рукопожатию, а без TLS никакого рукопожатия не происходит, поэтому у Shadowsocks или обычного SOCKS5 без TLS этот параметр не применяется. Он актуален только там, где Xray-core сам устанавливает TLS-соединение — у VLESS, Trojan и VMess с включённым TLS, а также в Reality.
Влияет ли fp на скорость соединения?
Практически нет — имитация формы ClientHello добавляет крайне небольшой объём вычислений на этапе рукопожатия и не влияет на скорость передачи данных после его завершения. На это, скорее, влияет режим XTLS Vision у VLESS, который работает уже после рукопожатия. fp — это в первую очередь про форму handshake, а не про производительность.
Что означает значение fp=unsafe?
unsafe отключает библиотеку uTLS и возвращает поведение обычной, встроенной в Go библиотеки TLS без какой-либо имитации отпечатка браузера. Название отражает то, что получившийся ClientHello легко отличить от трафика настоящих браузеров по его характерной, всегда одинаковой структуре. Для Reality такое значение обычно не подходит.
Должен ли fp у клиента совпадать с чем-то на сервере?
Нет — в этом особенность параметра по сравнению с pbk, sid или sni: сервер не хранит отдельной настройки под конкретный fp клиента и не сверяет её напрямую. Клиент выбирает значение самостоятельно, ориентируясь на рекомендацию администратора или оставляя значение по умолчанию. Единственное исключение — Reality, где ожидается узнаваемая, правдоподобная форма рукопожатия в целом.
В каких протоколах Happ встречается параметр fp?
Он появляется там, где Xray-core сам устанавливает TLS: в ссылках VLESS и Trojan с TLS или Reality, а также у VMess при включённом TLS. У Shadowsocks, обычного SOCKS5 и у Hysteria2, где TLS 1.3 встроен в QUIC по-другому, параметр fp в документации Happ отдельно не упоминается.
Упомянутые темы
Похожие материалы
Разделы по теме
Источники
- Документация Happ: примеры ссылок и параметры — обращение 28 сентября 2026
- Документация Xray: транспортная безопасность TLS — обращение 28 сентября 2026