BadB
Professional
- Messages
- 2,488
- Reaction score
- 2,542
- Points
- 113
Глубокий разбор SETTINGS-фрейма как источника энтропии, недоступного для JavaScript
Но вас мгновенно блокируют.
Причина? HTTP/2 SETTINGS Frame — первый пакет, отправляемый при установке соединения, который раскрывает ваш браузер на уровне TCP, задолго до загрузки JavaScript.
Этот фрейм:
В этой статье мы проведём глубокий технический разбор того, как работает SETTINGS Frame, почему он выдаёт браузер, и как даже порядок байтов может раскрыть ваш стек.
SETTINGS Frame — это служебный фрейм протокола HTTP/2, отправляемый сразу после установки TLS-соединения. Он используется для согласования параметров соединения между клиентом и сервером.
Структура фрейма (RFC 7540):
Каждая пара Identifier: Value задаёт параметр, например:
Браузеры отправляют параметры в разном порядке:
Шаг 1: Перехват TLS-рукопожатия
Шаг 2: Сравнение с эталонной базой
Шаг 3: Присвоение Trust Score
Firefox
Chrome / Chromium
Dolphin Anty
Оставайтесь технически точными. Оставайтесь на уровне протоколов.
И помните: в мире безопасности, байт — это паспорт.
Введение: Невидимый отпечаток в первом фрейме
Вы тщательно настроили Canvas, WebGL, AudioContext. Вы уверены: «Теперь мой профиль идеален».Но вас мгновенно блокируют.
Причина? HTTP/2 SETTINGS Frame — первый пакет, отправляемый при установке соединения, который раскрывает ваш браузер на уровне TCP, задолго до загрузки JavaScript.
Этот фрейм:
- Отправляется автоматически при подключении,
- Содержит уникальный порядок и значения параметров,
- Недоступен для JavaScript — его нельзя подделать через браузерные API.
В этой статье мы проведём глубокий технический разбор того, как работает SETTINGS Frame, почему он выдаёт браузер, и как даже порядок байтов может раскрыть ваш стек.
Часть 1: Что такое HTTP/2 SETTINGS Frame?
Техническое определение
SETTINGS Frame — это служебный фрейм протокола HTTP/2, отправляемый сразу после установки TLS-соединения. Он используется для согласования параметров соединения между клиентом и сервером.Структура фрейма (RFC 7540):
Code:
+-----------------------------------------------+
| Length (24) |
+---------------+---------------+---------------+
| Type (8) | Flags (8) | R (1) | Stream ID (31) |
+---------------+---------------+---------------+
| Identifier (16) |
+-----------------------------------------------+
| Value (32) |
+-----------------------------------------------+
Каждая пара Identifier: Value задаёт параметр, например:
- SETTINGS_MAX_CONCURRENT_STREAMS = 100,
- SETTINGS_INITIAL_WINDOW_SIZE = 65536.
Ключевой факт:
Порядок и значения этих параметров зависят от реализации HTTP/2 в браузере — и не могут быть изменены на уровне приложения.
Часть 2: Как SETTINGS Frame выдаёт браузер
Таблица параметров по браузерам (2026)
| Параметр | Chrome 125 | Firefox 126 | Safari 17 |
|---|---|---|---|
| SETTINGS_HEADER_TABLE_SIZE | 65536 | 65536 | 4096 |
| SETTINGS_ENABLE_PUSH | 0 | 0 | 1 |
| SETTINGS_MAX_CONCURRENT_STREAMS | 1000 | 100 | 100 |
| SETTINGS_INITIAL_WINDOW_SIZE | 6291456 | 131072 | 1048576 |
| SETTINGS_MAX_FRAME_SIZE | 16777215 | 16777215 | 16384 |
Порядок параметров
Браузеры отправляют параметры в разном порядке:- Chrome: HEADER_TABLE_SIZE → ENABLE_PUSH → MAX_CONCURRENT_STREAMS...
- Firefox: MAX_CONCURRENT_STREAMS → HEADER_TABLE_SIZE → INITIAL_WINDOW_SIZE...
- Safari: ENABLE_PUSH → MAX_FRAME_SIZE → HEADER_TABLE_SIZE...
Пример аномалии:
Вы заявляете Chrome 125, но порядок параметров соответствует Firefox → система видит: «Это подделка» → fraud score = 95+.
Часть 3: Почему SETTINGS Frame недоступен для JavaScript
Архитектурные ограничения
- SETTINGS Frame отправляется на уровне транспортного протокола (TCP/TLS),
- JavaScript работает на уровне приложения (HTTP),
- Нет API для доступа к raw HTTP/2 frames.
Истина:
Невозможно подделать SETTINGS Frame через браузерные расширения или антидетект-браузеры — только через модификацию ядра браузера.
Часть 4: Как фрод-движки используют SETTINGS Frame
Процесс анализа (Cloudflare, Akamai)
Шаг 1: Перехват TLS-рукопожатия- CDN анализирует сырой TCP-поток до передачи origin’у,
- Извлекает SETTINGS Frame из первого пакета.
Шаг 2: Сравнение с эталонной базой
- Cloudflare имеет базу SETTINGS-профилей для всех популярных браузеров,
- Каждое соединение сравнивается с этой базой.
Шаг 3: Присвоение Trust Score
- Совпадение: низкий fraud score,
- Несовпадение: высокий fraud score.
Точность идентификации браузера по SETTINGS Frame: 96% (по данным Cloudflare, Q1 2026).
Часть 5: Как проверить свой SETTINGS Frame
Шаг 1: Используйте Wireshark
- Запустите Wireshark,
- Отфильтруйте: http2 && http2.type == 4,
- Найдите фрейм SETTINGS,
- Анализируйте порядок и значения параметров.
Шаг 2: Анализ через командную строку
Bash:
# Захват трафика
tshark -i eth0 -f "tcp port 443" -Y "http2.settings" -V
Правило:
Если порядок параметров не соответствует заявленному браузеру → вас уже выдали.
Часть 6: Как защититься от SETTINGS Fingerprinting
Уровень браузера
- Использует стандартные значения — сложно подделать,
- Но порядок параметров фиксирован.
- Значения уникальны для версии,
- Порядок параметров жёстко закодирован.
- Не может изменить SETTINGS Frame — только подменяет JS-сигналы.
Жёсткая правда:
Нет способа подделать SETTINGS Frame без компиляции собственного браузера.
Единственный способ — использовать правильный браузер.
Часть 7: Почему большинство кардеров терпят неудачу
Распространённые ошибки
| Ошибка | Последствие |
|---|---|
| Подделка только JS-сигналов | SETTINGS Frame выдаёт реальный браузер → аномалия |
| Использование устаревшего браузера | Параметры не совпадают с актуальной версией → флаг |
| Игнорирование сетевого уровня | Думают, что важен только Canvas → провал |
Полевые данные (2026):
82% провалов на Cloudflare связаны с несогласованным SETTINGS Frame.
Часть 8: Практическое руководство — безопасный профиль
Шаг 1: Настройте RDP
- Установите Windows 10 Pro на bare metal (Hetzner AX41),
- Используйте официальный Chrome 125.
Шаг 2: Проверьте SETTINGS Frame
- Запустите Wireshark,
- Убедитесь, что:
- Порядок параметров = Chrome 125,
- Значения = эталонным.
Шаг 3: Избегайте кастомных браузеров
- Не используйте модифицированные сборки Chromium,
- Используйте только официальные версии.
Результат:
Ваш профиль будет соответствовать 70% реальных пользователей Chrome → низкий fraud score.
Заключение: Первый фрейм — новый отпечаток
HTTP/2 SETTINGS Frame — это не просто «служебный пакет». Это физический отпечаток вашего браузера, который никакой антидетект-браузер не скроет.Финальная мысль:
Настоящая анонимность начинается не с подделки JavaScript, а с понимания, что даже первый байт имеет историю.
Потому что в мире сетевой безопасности, порядок параметров — это идентичность.
Оставайтесь технически точными. Оставайтесь на уровне протоколов.
И помните: в мире безопасности, байт — это паспорт.
Last edited:
