Сравнение сессий
Сравнение пар запрос/ответ между захватами: дрейф, заголовки, тела, TLS-отпечатки.
Traffic Jam хранит все импортированные захваты в одном рабочем пространстве, поэтому один и тот же эндпоинт, записанный в двух сборках или до/после изменения, можно сопоставить и сравнить поле за полем. Сравнение доступно на трёх вкладках анализа — Compare, TLS и Timeline — из навигации рабочего пространства (сначала импортируйте захваты, см. /docs/ru/capture/).
Сопоставление базовой версии с кандидатом
Откройте вкладку Compare. В верхней части расположены два селектора: Baseline (эталонный запрос) и Candidate (то, с чем вы его сравниваете). Выберите Baseline, и Traffic Jam автоматически подберёт лучшего Candidate из другого захвата, ранжируя варианты по оценке совпадения.
Пары формируются по методу, authority и пути — тот же compareKey, что используется для группировки трафика в других местах. Оценка начисляется в порядке убывания веса:
| Сигнал | Баллы |
|---|---|
| Тот же таргет (метод + authority + путь) | +34 |
| Другой захват (в режиме cross-capture) | +22 |
| Тот же хост / тот же путь (если таргет отличается) | +14 / +12 |
| Тот же метод | +10 |
| Тот же статус (или тот же класс статуса) | +10 / +6 |
| Тот же query | +7 |
| Тот же протокол, наличие тела, SNI | по +5 |
| Тот же content-type, ALPN | по +4 |
| Близкая длительность (в пределах 10%) | до +5 |
Оценка 72+ (или любое совпадение по таргету) — это Best-совпадение, 60+ — Strong, ниже — Weak; слабые совпадения никогда не выбираются автоматически. Фильтр Match в селекторе Candidate сужает выборку до cross-capture, same target, same host или same capture. Если один и тот же запрос был отправлен несколько раз, степпер ‹ n/m › рядом с селектором позволяет переключаться между его вхождениями.
[!TIP] Клавиатура:
aоткрывает Baseline,mоткрывает Candidate,/переводит фокус на пустой селектор,[]переключают вхождения Baseline,{}— Candidate,xменяет стороны местами,sсохраняет пару как набор сравнения,dочищает оба селектора.
Заголовок сравнения даёт сводку дрейфа с первого взгляда: счётчик изменений по каждой области плюс предупреждающие бейджи при расхождении статуса (200 → 404), протокола (HTTP/2 → HTTP/1) или длительности.
Сравнение каждой части обмена
Панель деталей открывается на первой вкладке, где есть различия. Вкладки 1–8 переключают между:
| Вкладка | Что сравнивается |
|---|---|
| URL | Структурированные поля scheme/host/path, бок о бок |
| Query | Значения по каждому параметру, сгруппированные по имени с индексами повторов |
| Req headers / Res headers | Добавленные, удалённые, изменённые значения и порядок заголовков |
| Req body / Res body | Сравнение размера/текста плюс семантический diff |
| Protocol | Анонсированные перед запросом HTTP/2 SETTINGS, версии, TCP/H2-поток |
| TLS | Поля отпечатка ClientHello (см. ниже) |
Сравнение заголовков учитывает порядок: перестановка Cookie и Authorization отобразится как изменение порядка, даже если все значения идентичны — это полезно, когда сервер чувствителен к последовательности заголовков.
Для тел переключайтесь между Semantic и Text тумблером над diff. Семантический diff разбирает обе стороны и выравнивает записи по пути, так что переформатированный JSON или переставленные поля формы проявляются как строки changed / added / removed по каждому полю вместо сплошной стены красного текста:
| Синтаксис | Выравнивание |
|---|---|
| JSON | JSON-путь до каждого листа ($.user.id, $.items[0]) |
| Form | URL-декодированные поля, повторы сгруппированы |
| XML / HTML | Пути элементов/атрибутов/текста |
| CSV | Ячейки row[n].column относительно строки заголовков |
Переключатель word / char задаёт гранулярность инлайн-подсветки в текстовом виде.
Сравнение TLS-отпечатков ClientHello
Вкладка TLS внутри пары запросов, а также отдельная вкладка анализа TLS сравнивают реальное рукопожатие — а не только HTTP. ClientHello есть только в импортах PCAP/PCAPNG; в HAR-файлах пакетов рукопожатия нет, поэтому вкладка объясняет это и предлагает вместо этого проверить сертификаты.
Таблица полей перечисляет каждое поле отпечатка и помечает его как same / diff:
SNI, ALPN, version, supported versions, JA3, JA3 full, JA4, JA4 raw, cipher suites, extensions, supported groups, EC point formats, signature algs.
Помимо таблицы, доступны три вида: Fields, Raw hello (hex-дамп ClientHello со смещениями в байтах, плюс восстановленное hello, если рукопожатие было разбито на сегменты) и Text diff. Кнопки копирования экспортируют сырой hex. Сводная полоса и бейджи отмечают, изменились ли поля, сырые байты, JA3, JA4 или ALPN.
TLS-селектор оценивает Candidate иначе, чем HTTP: тот же таргет +60, тот же SNI +50, отличающиеся JA3/JA4 +16, другой захват +8, общий ALPN +6. Чипы-переключатели фильтруют по Raw hello only, Has SNI, Has JA4, Same target, Same SNI или Different JA3/JA4.
[!NOTE] Group repeated (включено по умолчанию) схлопывает идентичные ClientHello — один и тот же захват, таргет, JA4/JA3 и ALPN — в одну строку со счётчиком вхождений
×N. Если его выключить, отобразятся все сырые рукопожатия — так можно кластеризовать разных TLS-клиентов, обращавшихся к одному хосту.
Аудит сертификатов
Подвкладка Certificates на вкладке TLS (клавиши 1/2 переключают Compare/Certificates) перечисляет все наблюдавшиеся цепочки серверных сертификатов с поиском по хосту, издателю, SAN, отпечатку или захвату. Каждая запись показывает subject, issuer, серийный номер, окно действия, имя сервера и индекс в цепочке, а также бейдж валидности: Valid, Expiring soon (менее 30 дней) или Expired. Здесь можно заметить ротацию CA, самоподписанный сертификат или изменение серийного номера, значимое для пиннинга, между захватами.
Выявление различий в последовательности на Timeline
По-запросные diff упускают порядок — захват, который делает лишний вызов, пропускает один или меняет порядок потока. Откройте вкладку Timeline и переключитесь в режим Compare (клавиша v), затем выберите базовый и сравниваемый захваты. Traffic Jam выравнивает две последовательности запросов и отображает три типа строк:
| Строка | Значение |
|---|---|
| pair | Сопоставленные запросы (тот же compareKey или оценка ≥ порога) |
| baseline-only | Присутствует только в базовом захвате |
| compare-only | Присутствует только в сравниваемом захвате |
Выравнивание использует оптимальное выравнивание последовательностей для захватов до 1200 запросов на сторону и более быстрый жадный проход сверх того (в строке статистики помечается как fast alignment). Строка статистики сообщает общее число строк, число сопоставленных пар и количество baseline-only / compare-only.
Из выровненной пары нажмите p, чтобы отправить обе стороны прямо на вкладку Compare как Baseline/Candidate (или a / m, чтобы задать одну сторону), а также открыть TLS-отпечаток запроса из его инспектора. Фильтры Timeline — поиск, хосты, статус (2xx–5xx, errors, open), протокол, метод, поток и наличие тела — применяются к обоим захватам до выравнивания, так что можно сравнить только аутентифицированные вызовы API. Окружающий рабочий процесс анализа см. в /docs/ru/analysis/.
[!WARNING] Сравнение только читает захваченный трафик и никогда не отправляет запросы. Любое активное зондирование (replay, мутации) рассматривается в других разделах и должно быть направлено только на системы, которые вы уполномочены тестировать.