JA3/JA4-fingerprinting: как ТСПУ ловит VPN-трафик
JA3 и JA4 — это «отпечатки» TLS-handshake. По ним DPI отличает реальный браузер от поддельного VPN-клиента — даже если шифрование одинаковое.
JA3 и JA4 — это методы создания «отпечатка» (fingerprint) TLS-клиента по структуре его ClientHello. Двум разным клиентам с одинаковыми TLS-параметрами соответствует одинаковый fingerprint. Этим пользуются и для детекции ботов, и для детекции VPN.
Что такое ClientHello
TLS-handshake начинается с ClientHello — клиент рассказывает серверу:
- Поддерживаемые версии TLS.
- Поддерживаемые cipher suites (наборы шифров).
- Поддерживаемые расширения (extensions).
- Поддерживаемые elliptic curves.
- И ещё несколько мелочей.
Каждый клиент (Chrome, Firefox, Safari, curl, Python requests, openssl) шлёт это в уникальном порядке и с уникальным набором значений.
Как формируется JA3
JA3 берёт несколько полей ClientHello, склеивает их в строку, считает MD5. Получается уникальный идентификатор клиента.
Например, Chrome 120 на Windows даёт один и тот же JA3 каждый раз. Если у кого-то JA3 = JA3-Chrome-120-Windows — это, скорее всего, реальный Chrome 120.
Если у кого-то JA3 = JA3-curl-X.Y — это curl. Если JA3 = JA3-openvpn-2.6-default — это OpenVPN.
JA4 — обновлённая версия
JA4 (с 2023) добавляет больше полей и читаемый формат: t13d1516h2_8daaf6152771_b186095e22b6. Включает:
- Версию TLS (t13 = TLS 1.3).
- ALPN (h2 = HTTP/2).
- Хэш cipher suites.
- Хэш extensions + signature algorithms.
JA4 более устойчив к простым «перемешиваниям» — обмануть его сложнее.
Как ТСПУ ловит VPN через JA3
1. Собираются JA3-fingerprints популярных VPN-клиентов (старый OpenVPN, MTProto-клиент, Wireguard-over-TLS и т.д.).
2. ТСПУ смотрит JA3 проходящих TLS-соединений.
3. Если JA3 совпадает с известным VPN-клиентом — блок.
В апреле 2026 в РФ зафиксирована именно такая блокировка MTProto-прокси по JA3 ClientHello старых Telegram-клиентов.
Как современные VPN обходят
- uTLS — библиотека, которая позволяет Go-приложению (на котором написано большинство современных VPN) посылать ClientHello, визуально идентичный Chrome/Firefox/Safari. Получаем JA3 настоящего браузера.
- VLESS Reality — целиком копирует TLS-handshake выбранного «прикрытия» (типа
www.google.com). JA3 совпадает с реальным Google. - Свежие клиенты MTProto — подгружают актуальные браузерные ClientHello-шаблоны и шлют их под видом FakeTLS.
Что дальше
Следующий рубеж — это поведенческий fingerprinting: не только TLS, а ещё структура запросов, timing, размеры пакетов. Это уже не отбивается uTLS, нужно «имитировать живого пользователя».
WProxy на стороне сервера регулярно обновляет TLS-fingerprints клиентов под актуальные браузерные версии. Это одна из причин, почему наши протоколы продолжают работать там, где обычные перестают.
Один аккаунт — пять протоколов
MTProto, Hysteria, VLESS, AmneziaWG и Whitelist — пять протоколов под разные задачи, каждый подключается отдельно. Регистрация бесплатная, на старте хватит 100 ₽ чтобы попробовать.
Приложение WGate для Android
AmneziaWG и Whitelist-VPN в один тап. Только Android.