{% extends "base.html" %} {% block title %}JA4 SOC — Browser Signatures{% endblock %} {% block page_title %} Browser Signature Detection

Détection passive des navigateurs (§4)

Analyse croisée du fingerprint HTTP/2 (SETTINGS, WINDOW_UPDATE, pseudo-headers) et du JA4 TLS pour identifier les vrais navigateurs et détecter les imposteurs.

TLS↔H2 mismatch : sessions où le JA4 identifie une famille (ex: Chromium) mais les SETTINGS H2 appartiennent à une autre (ex: Firefox). Signal fort d'un outil qui émule un TLS de navigateur sans répliquer le H2.

Source : view_ai_features_1h (dict_browser_h2, h2_window_*)

{% endblock %} {% block content %}
Sessions (24h)
Avec données H2
Famille H2 connue
Taux match H2
Mismatch TLS↔H2
% Mismatch / H2
Browser Signature Detection §4 — Le moteur browser_matcher score chaque session sur 7 dimensions : H2 SETTINGS (0.30), WINDOW_UPDATE (0.15), pseudo-headers (0.15), H2 PRIORITY (0.10), HTTP headers (0.15), structure TLS (0.10), dictionnaire JA4 (0.05). Un mismatch TLS↔H2 est détecté quand le JA4 (couche TLS) identifie Chrome mais le WINDOW_UPDATE H2 est celui de Firefox (ou vice-versa) — signature d'un outil qui copie le TLS sans répliquer fidèlement le H2. En mode DUAL_MODE (défaut), les décisions sont journalisées sans modifier le bypass — activer BROWSER_MATCHER_REPLACE=true pour basculer.
Familles détectées — dict H2

Familles H2 (dict_browser_h2)

Correspondance du fingerprint SETTINGS H2 complet (format Akamai) avec le dictionnaire dict_browser_h2. Une correspondance exacte identifie Chrome, Firefox, Safari ou Edge avec un haut degré de certitude.

Source : view_ai_features_1h.h2_dict_family

Signal WINDOW_UPDATE H2

Valeur WINDOW_UPDATE par famille

La valeur du frame WINDOW_UPDATE est l'empreinte H2 la plus fiable car chaque navigateur utilise une valeur distincte et constante :

  • Chrome : 15 663 105
  • Firefox : 12 517 377
  • Safari : 10 485 760
  • curl/httpx : absent (0)

Source : view_ai_features_1h.h2_window_*

Mismatch TLS↔H2 par famille JA4

Incohérences cross-layer

Proportion de sessions dont la famille JA4 (TLS) contredit la famille H2. Un taux élevé pour "Chromium" indique des outils qui imitent Chrome TLS sans reproduire le comportement H2.

Exemples de mismatch :

  • JA4=Chromium + WU=12517377 → Firefox H2
  • JA4=Firefox + WU=15663105 → Chrome H2
  • JA4=Navigateur + WU absent → outil sans H2

Source : view_ai_features_1h.tls_h2_family_mismatch

Sessions suspectes (mismatch confirmé)

Imposteurs potentiels

Sessions dont le JA4 (TLS) et les SETTINGS H2 identifient des familles différentes — signal fort d'un outil qui émule le TLS d'un navigateur mais trahit son origine via le H2.

Action : Investiguer l'IP, vérifier le JA4 dans la page Détections, ou ajouter à la liste de blocage.

IP JA4 famille H2 famille WU value Pseudo-order Hits Cohérence
Chargement…
Distribution des ordres pseudo-headers H2

Ordre des pseudo-headers HTTP/2

L'ordre des pseudo-headers (:method, :authority, :scheme, :path) est spécifique à chaque navigateur :

  • m,a,s,p — Chrome et Safari
  • m,p,s,a — Firefox

Un ordre non répertorié indique un outil ou une version rare.

Source : view_ai_features_1h (h2_order_chromesafari, h2_order_firefox)

Chrome / Safari — m,a,s,p
sessions
Firefox — m,p,s,a
sessions
H2 présent — ordre non répertorié
sessions (outil probable)
H2 PRIORITY frames présents
sessions (Firefox ancien)
Base de signatures H2

Table browser_h2_signatures

Source des fingerprints HTTP/2 (format Akamai) utilisés par dict_browser_h2. Le dictionnaire est rechargé automatiquement après chaque ajout ou suppression.

Format : SETTINGS|WINDOW_UPDATE|PRIORITY|PSEUDO_ORDER
Exemple Chrome : 1:65536,2:0,4:6291456,6:262144|15663105|0|m,a,s,p

Source : ja4_processing.browser_h2_signatures (migration 06)

Fingerprint H2 (format Akamai) Famille Confidence Notes Action
Chargement…
Règles de scoring — browser_matcher.py

Dimensions du scoring navigateur

Le browser_matcher calcule un score 0–1 par famille en agrégeant 7 dimensions. Ces règles sont définies dans bot_detector/browser_signatures.py.

Modification : éditer le fichier Python et redéployer bot-detector

Dimension Poids Chrome Firefox Safari
H2 SETTINGS exact 0.30 1:65536,2:0,4:6291456,6:262144 1:65536,4:131072,5:16384 1:4096,3:100,4:65535
H2 WINDOW_UPDATE 0.15 15 663 105 12 517 377 10 485 760
Pseudo-header order 0.15 m,a,s,p m,p,s,a m,a,s,p
HTTP headers cohérence 0.15 Sec-CH-UA ✓ · Sec-Fetch ✓ Sec-CH-UA ✗ · Sec-Fetch ✓ Sec-CH-UA ✗ · Sec-Fetch ✗
H2 PRIORITY frames 0.10 absent absent absent
TLS structure (JA4 famille) 0.10 Chromium · Chrome · Edge + GREASE Firefox · pas de GREASE Safari · pas de GREASE
JA4 dict lookup 0.05 dict_browser_ja4 — correspondance fingerprint TLS exact
Seuil de bypass ML ≥ 0.72 ≥ 0.68 ≥ 0.68

Mode actuel : DUAL_MODE — le matcher journalise les décisions sans modifier le scoring ML. Activer le bypass : variable d'environnement BROWSER_MATCHER_REPLACE=true dans bot-detector.

{% endblock %}