TEDx LIVE DEMO

0 Comptes Gmail
0 Containers Chrome
0 Secondes
0 Protocoles
Découvrir l'architecture
SCROLL
Chapitre 1

Fondements : isTrusted, le Mur Invisible

Le standard W3C définit un flag binaire que aucun script ne peut falsifier. L'injection DOM classique est morte.

Script Clic (JS)

event.isTrusted = false
DÉTECTÉ — BLOQUÉ
button.click(); // dispatchEvent
// Le WAF voit : isTrusted = false
// Résultat : REJETÉ

Vrai Clic (Vous)

event.isTrusted = true
ACCEPTÉ — PASS
// Votre doigt physique
// Le WAF voit : isTrusted = true
// Résultat : ACCEPTÉ

Le W3C a conçu isTrusted comme une propriété en lecture seule. Aucun script ne peut la définir à true.

Dans les frameworks réactifs (React, Polymer, Angular), le DOM visuel est décorrélé de la machine d'état interne. L'injection directe de valeur via element.value = "x" ne déclenche pas les mutateurs encapsulés.

La solution : descendre au niveau OS et simuler des signaux matériels via CDP + X11.

Chapitre 2

Hydratation JS : Le Piège Temporel

Un composant peut être visible mais pas encore fonctionnel. Les signaux injectés entre T0 et T2 sont perdus.

T₀ Rendu visuel <input>
L'élément apparaît dans le DOM
T₁ (+10ms) L'automate injecte la valeur
Signal envoyé → mais les listeners ne sont PAS attachés !
T₂ (+400ms) Hydratation terminée
Les listeners sont actifs — mais le signal est déjà passé

Solution : Buffer d'Hydratation

def deterministic_element_wait(cdp, selector, buffer_ms=1500):
    """Sonde le DOM puis applique un délai d'hydratation."""
    for attempt in range(20):
        if cdp.evaluate_js(f"!!document.querySelector('{selector}')"):
            # L'élément est visible. Attendre la fin d'hydratation.
            time.sleep(buffer_ms / 1000.0)
            return True
        time.sleep(0.2)
    raise TimeoutError("Element non rendu.") 

Après détection visuelle, on attend 1500ms avant d'injecter. Ce buffer couvre le délai d'hydratation de Polymer/React.

Compensation de Dérive d'Horloge

Dans les containers Docker, le clock drift peut invalider les jetons TOTP (fenêtre de 30s). L'algorithme calcule dynamiquement :

Offset = Tserveur − Tlocal
Chapitre 3

Simulation Matérielle : Votre Clavier Vous Trahit

Les WAF analysent l'espérance mathématique des délais inter-touches. Un délai constant est une signature algorithmique.

Tapez quelques mots — votre signature biométrique apparaît en temps réel

Distribution Robot (Uniforme)

Variance : 0ms — DÉTECTÉ

Distribution Humaine (Gaussienne)

σ = 12ms — PASS

Votre Distribution (Live)

En attente de frappe...
// Séquence CDP — rawKeyDown empêche le doublement
cdp.send("Input.dispatchKeyEvent", {
    type: "rawKeyDown", key: char, windowsVirtualKeyCode: vk
});
cdp.send("Input.dispatchKeyEvent", {
    type: "char", text: char
});
time.sleep(random.gauss(μ=0.05, σ=0.01)); // Biomimétique !
cdp.send("Input.dispatchKeyEvent", {
    type: "keyUp", key: char, windowsVirtualKeyCode: vk
});
Chapitre 3b

Trajectoire Souris : La Loi de Fitts

Les mouvements de souris suivent la Loi de Fitts, pas des lignes droites. Les courbes de Bézier simulent cette physique.

Distance
Points de contrôle 0
Courbure
Verdict
Chapitre 4

Cross-Origin : Le Théorème Spatial Absolu

La Same-Origin Policy interdit l'accès aux iframes. Mais Input.dispatchMouseEvent frappe des pixels, pas du DOM.

Vecteur Absolu C(x, y) = Vparent(x, y) + Venfant(x, y)
1 Page.getFrameTree → ID du processus iframe
2 Page.createIsolatedWorld → Injection dans l'iframe
3 getBoundingClientRect() × 2 → Somme vectorielle
4 Input.dispatchMouseEvent(xabs, yabs) → Clic physique
Chapitre 5

L'Event Waterfall : L'Avalanche de Signaux

Un seul keystroke génère 5 événements W3C en cascade. La méthode logicielle doit tous les synthétiser.

T+0ms Événement Détail CDP
mousedown MouseEvent { bubbles: true }
mouseup MouseEvent { bubbles: true }
click MouseEvent { bubbles: true }
focus element.focus()
keydown rawKeyDown → vk_code
char text: character
input InputEvent { bubbles, composed }
keyup keyUp → vk_code
change Event { bubbles: true }

            

Limitation fondamentale : cette méthode logicielle ne peut PAS falsifier isTrusted. Si le WAF analyse ce flag, la cascade sera classifiée isTrusted = false.

C'est pourquoi l'architecture hybride (CDP capteur + X11 moteur) est la solution définitive.

Chapitre 6

Réseau : Réputation de Confiance et Topologie

L'interaction parfaite est inutile si l'IP est classée "Data Center". Le découplage Compute/Routing est critique.

BLOQUÉ

Architecture Vulnérable

VPS Cloud
Hetzner / AWS
Google AI Studio
Trust Score
23/100
ASN = "Data Center" → Détecté en 200ms
IP: Datacenter rDNS: hébergement GeoIP: hosting
VALIDÉ

Architecture CPRM (Optimale)

Bare-Metal
10 Containers Docker
🔒 Proxy Résidentiel
ISP / 4G / 5G
Google AI Studio
Trust Score
89/100
ASN = "FAI Résidentiel" → Signal légitime
IP: Résidentielle rDNS: ISP GeoIP: residential
20 Proxys ISP
4 Pays couverts
99.2% Uptime
<50ms Latence ajoutée

20 Proxys ISP Résidentiels Actifs

# Architecture d'instanciation en isolation logique
google-chrome-stable \
  --headless=new \
  --no-sandbox \
  --proxy-server="http://$RESIDENTIAL_PROXY_IP:$PORT" \
  --remote-debugging-port=$CDP_PORT \
  --user-data-dir="/tmp/ephemeral_profile_$WORKER_ID"
Chapitre 7

La Méthode Nucléaire : Purge Éphémère

Les traceurs biométriques (Canvas Fingerprint, TLS FP, IndexedDB) rendent les cookiesclear insuffisants. La solution : destruction physique.

Chrome Actif Traceurs : 47
SIGKILL pkill -9 chrome
🔥
Purge shutil.rmtree(profile)
Respawn supervisord restart
🌞
Warm-up Navigation neutre aléatoire
Prêt Score : 92/100

Le Paradoxe du Score de Virginité : un navigateur absolument propre (zéro cache, zéro historique) qui va directement vers un portail de haute sécurité est un motif anormal. La phase Warm-up navigue aléatoirement sur des domaines neutres pour construire un historique crédible.

Pipeline

Le Pipeline Complet : Auth → Proxy → LLM

Les 100 comptes authentifiés alimentent AIstudioProxyAPI — un reverse proxy Gemini compatible OpenAI.

🔒

100 Gmail

Comptes authentifiés via CDP + TOTP (ce qu'on vient de voir)

🛠

AIstudioProxyAPI

Reverse proxy Gemini /v1beta/*
github.com/CJackHwang/AIstudioProxyAPI

🤖

OpenAI-Compatible

API /v1/chat/completions
Drop-in replacement

🌐

Applications

Dev tools, agents, chatbots
Tout client OpenAI SDK

# AIstudioProxyAPI — Architecture
# Chaque compte = 1 session AI Studio gratuite
# Le proxy round-robin les sessions pour distribuer la charge

curl https://your-proxy/v1/chat/completions \
  -H "Authorization: Bearer your-key" \
  -d '{"model":"gemini-2.5-pro","messages":[...]}'

# Le proxy traduit :
# OpenAI format → Gemini /v1beta format
# Round-robin sur les 100 sessions authentifiées
# Gère le rate limiting par compte (RPM/RPD)
Démo Live

Architecture Hybride : 100 Comptes, 10 Containers

CDP comme capteur (lecture DOM) + X11 comme moteur (clics physiques). La synergie finale.

Comptes
0 Réussis
0 Échoués
0s Temps
Console