
Un proxy HTTP furtif de nouvelle génération qui déguise parfaitement les requêtes en navigateur Chrome sur toutes les couches de la pile.
"Je n'y crois pas, camouflage thermoptique !"
Il s'agit d'un proxy HTTP conçu pour contourner les services qui utilisent l'empreinte numérique telle que JA4+ pour bloquer certains clients HTTP. Grâce à ce proxy, vous pouvez utiliser vos clients HTTP préférés comme curl et bénéficier tout de même d'empreintes magiquement indiscernables de celles d'un véritable navigateur web (Chrome/Chromium). thermoptic est également livré avec quelques fonctionnalités amusantes pour atténuer l'empreinte numérique basée sur JavaScript. Il facilite aussi le scraping hybride en combinant un navigateur web et des clients HTTP de bas niveau.
Même si vous n'êtes pas familier avec l'empreinte JA4+, si vous avez déjà fait du scraping, vous avez probablement déjà été bloqué par celle-ci. Des services populaires comme Cloudflare utilisent de telles techniques (et d'autres astuces) pour détecter l'utilisation de clients HTTP « non humains » afin de bloquer les requêtes. Ces services peuvent également utiliser cette empreinte pour détecter si vous démarrez une session avec un vrai navigateur puis basculez vers un client de bas niveau comme curl par la suite. thermoptic résout tous ces problèmes en présentant une empreinte de navigateur « réel » unifiée pour toutes les requêtes de scraping.
Voici un exemple d'empreinte JA4H (HTTP) de curl sans le proxy :
$ curl https://ja4db.com/id/ja4h/
ge11nn090000_b6a016211e8a_000000000000_e3b0c44298fc
Cela est assez différent de l'empreinte que produit Chrome lorsque vous visitez directement l'URL :
ge11cn19enus_f2808f0d04cf_9a10d4221160_7068f58def6e
Cependant, lorsque nous utilisons le proxy pour effectuer la requête, notre empreinte JA4H est magiquement identique :
$ curl --proxy http://thermoptic:1234 https://ja4db.com/id/ja4h/
ge11cn19enus_f2808f0d04cf_9a10d4221160_7068f58def6e
(Il en va de même pour notre empreinte TLS JA4, etc).
Pour démarrer un proxy thermoptic qui dissimule votre trafic via une instance Chrome conteneurisée sur Ubuntu 22.04 :
Configuration Docker standard (fonctionne sur les hôtes sans runtime GPU) :
docker compose up --build
Voilà, vous pouvez maintenant proxyfier le trafic à travers lui :
curl --proxy http://127.0.0.1:1234 --insecure https://ja4db.com/id/ja4h/
Remarques importantes :
PROXY_USERNAME et PROXY_PASSWORD.---insecure, vous devez utiliser le fichier CA généré situé dans ./ssl/rootCA.crt. Celui-ci est généré la première fois que vous exécutez thermoptic.thermoptic à n'importe quelle instance Chrome/Chromium lancée avec le flag --remote-debugging-port. C'est essentiel car vous voudrez configurer et faire transiter par proxy des environnements plus couramment utilisés afin de garder votre empreinte aussi discrète que possible (par exemple Chrome sous Windows)./dev/dri, et permet au conteneur Chrome fourni de basculer vers le chemin de rendu NVIDIA/Vulkan. Pour l'utiliser, exécutez docker compose -f docker-compose.yml -f docker-compose.gpu.yml up --build.curl, requests, etc.) avec thermoptic, il suffit de définir le proxy et vos empreintes sont prises en charge../hooks/onstart.js.http://127.0.0.1:14111) pour contrôler la fenêtre du navigateur Chrome dockerisé. Utile pour se connecter manuellement à des sites puis utiliser de manière transparente le proxy pour effectuer des requêtes en tant que votre session connectée (et pour le débogage).UPSTREAM_PROXY dans docker-compose.yml.
curl avec thermoptic défini comme proxy.thermoptic analyse la requête pour déterminer au mieux quel type de requête navigateur elle est censée être (par exemple une visite manuelle d'URL ? Une soumission de formulaire ? Une requête fetch() ?).thermoptic utilise le Chrome Debugging Protocol (CDP) pour piloter le navigateur et configurer une page qui simule la requête exactement comme elle se produirait normalement dans un vrai navigateur web.thermoptic déclenche la requête via le contexte simulé et capture la réponse HTTP.thermoptic renvoie la réponse HTTP au client.Du fait que le navigateur effectue réellement la requête en utilisant sa pile complète, les empreintes JA4 résultantes sont identiques.
NOTE : Comme de nombreux WAF emploient une empreinte JavaScript au niveau du navigateur web, thermoptic expose également des hooks pour utiliser le navigateur lors des étapes clés du processus de scraping. Voir cette section pour plus d'informations à ce sujet.
Pour le dire franchement : les autres approches ont des défauts fondamentaux qui les empêchent d'être une solution pratique à long terme au problème de l'empreinte navigateur.
De nombreuses autres tentatives pour « battre » l'empreinte JA4+ des navigateurs le font en réimplémentant les différentes couches de la pile du navigateur. Cette approche présente un certain nombre d'inconvénients sérieux, tels que :