Le contrôle de l'empreinte de navigateur, dans le moteur
Une empreinte de navigateur, ce sont des dizaines de valeurs qui doivent avoir un sens ensemble. Clearcote les dérive d'un seul seed et les sert depuis les chemins de code propres à Chromium : une page qui lit le GPU, l'écran et les polices obtient des réponses qui appartiennent à une seule machine plausible, avec la langue et le fuseau horaire assortis, dans le frame principal, dans les iframes et dans les workers.
Le persona issu du seed et le bruit par site sont inclus dans toutes les formules, build ouvert compris.
Un seed, une identité
import { launch } from "clearcote";
// the same seed returns the same identity; a new seed is a new one
const browser = await launch({
fingerprint: "account-42",
timezone: "America/New_York",
acceptLanguage: "en-US,en",
});Points clés
Un seed, une machine
--fingerprint dérive un persona corrélé : gamme de CPU et de mémoire, écran, profondeur de couleur, GPU, voix, codecs et périphériques multimédias qui vont ensemble.
Par site, pas global
Le bruit canvas et WebGL est dérivé par site, sur le modèle du farbling de Brave : ces hashes changent d'un site à l'autre, tandis que le matériel déclaré par le persona reste partout le même, comme pour une vraie machine.
Natif dans tous les realms
Les valeurs viennent de getters C++ : toString, les descripteurs de propriété et une iframe ou un worker neuf voient tous du code natif et la même réponse.
Un GPU cohérent avec lui-même
Le vendor et le renderer WebGL restent constants pendant la session, les limites de getParameter suivent ce GPU dans la mesure où cette machine peut les assurer, et WebGPU décrit le même adaptateur.
Importer une vraie machine
Chargez un profil capturé sur un vrai Chrome, ou choisissez-en un dans la bibliothèque ouverte de profils : ses valeurs remplacent les valeurs synthétiques.
Baisser le curseur là où ça compte
lightStealth ne fait varier que les métadonnées sans risque. fingerprintNoise: false conserve l'identité et supprime le bruit canvas et WebGL là où c'est le bruit lui-même qui est noté.
Pourquoi la cohérence l'emporte sur les valeurs astucieuses
La détection repose rarement sur une seule valeur inhabituelle. Elle cherche des contradictions : une chaîne GPU que les pixels ne confirment pas, un fuseau horaire en désaccord avec l'IP, un worker qui déclare un autre matériel que la page. La question à laquelle répond Clearcote n'est donc pas de savoir quelles valeurs falsifier, mais comment les garder toutes cohérentes entre elles et avec la machine sous-jacente.
Le seed est déterministe. Le même seed produit la même identité à chaque lancement, comme un visiteur qui revient, et un nouveau seed en produit une nouvelle. Les relectures canvas 2D et WebGL portent une légère perturbation par seed et par site, parce que la relecture varie déjà d'une vraie machine à l'autre. L'audio rendu et les client rects sont volontairement laissés exacts : les perturber produit des valeurs qu'aucun vrai navigateur n'émet, ce qui est un signal plus fort que deux profils partageant un hash. La documentation sur l'empreinte passe chaque surface en revue.
Certaines déclarations ne peuvent pas être étayées par l'hôte, et la documentation le dit clairement. Une taille d'écran qui ne correspond pas à la vraie fenêtre, ou un GPU que la machine ne peut pas réellement rendre, est confronté à l'hôte et échoue. C'est pour cela que lightStealth garde l'écran réel et que les surcharges d'écran sont optionnelles, que le pont canvas existe, et que le point de départ recommandé fait moins varier les valeurs, pas plus.
Ce qui est couvert
| Surface | Ce que fait Clearcote |
|---|---|
| Relecture canvas 2D et WebGL | Bruit par seed et par site, dans la dispersion naturelle entre vraies machines |
| Renderer et limites WebGL | Un GPU constant sur la session, avec les limites de paramètres de ce GPU partout où cette machine peut les assurer |
| WebGPU | Le même adaptateur que WebGL : par défaut, les deux API désignent le même GPU |
| Audio | La fréquence d'échantillonnage et la latence d'AudioContext suivent le persona ; les échantillons rendus restent exacts |
| Polices et voix de synthèse | Les jeux de polices et de voix du persona |
| Matériel et écran | hardwareConcurrency, deviceMemory, pixel ratio, profondeur de couleur, points tactiles, ainsi que l'écran et la zone de travail du persona (lightStealth garde l'écran réel) |
| Langue et heure | Accept-Language, navigator.language, Intl et le fuseau horaire concordent |
| User agent et client hints | Marque, version, plateforme, bitness et modèle, fournis par le moteur |
| TLS | Le ClientHello suit la version de Chrome annoncée par le persona |
| Indices d'automatisation | navigator.webdriver et les signes révélateurs du mode headless |
La liste complète des switches, avec le rôle de chacun, se trouve dans la référence du flag d'empreinte.
Cas d'usage
Confidentialité
Un navigateur standard déclare la combinaison de valeurs de votre propre machine. Un persona déclare une machine plausible et cohérente qui n'est pas la vôtre.
Des identités séparées
Donnez à chaque compte son propre seed, pour que les comptes ne partagent pas une même empreinte de rendu.
Tester du code sensible à l'empreinte
Observez comment votre propre code antifraude, d'analytics ou de personnalisation réagit à différents matériels, GPU et locales.
Recherche sur le fingerprinting
Reproduisez ce que mesure une page de test, avec des entrées contrôlées et reproductibles.
Clearcote est conçu pour la confidentialité, les tests, la recherche et l'automatisation licite. Vous êtes responsable de l'usage que vous en faites et du respect des conditions d'utilisation des sites que vous visitez.
Offres qui l'incluent
Le persona issu du seed, le bruit par site, les surcharges de métadonnées et l'alignement TLS sont inclus dans toutes les formules, build ouvert compris. Le build sous licence (gratuit avec GitHub) ajoute quelques switches plus fins et le réalisme comportemental, et reçoit en premier les nouvelles versions majeures de Chromium ; Pro, lui, ne débloque aucun spoofing qui manquerait à l'offre Gratuit avec GitHub.
Comparer les offresFAQ
Qu'est-ce que le spoofing d'empreinte de navigateur ?
Modifier les valeurs qu'un site web lit pour reconnaître un navigateur : le GPU, l'écran, les polices, le matériel, la langue, etc. La plupart des outils le font en surchargeant des propriétés JavaScript. Clearcote le fait dans le moteur Chromium : les valeurs viennent du code natif et restent cohérentes entre elles.
Pourquoi ne pas utiliser un outil de spoofing d'empreinte en JavaScript ?
Les fonctions surchargées se trahissent. toString renvoie le source de la surcharge au lieu de [native code], les descripteurs de propriété changent, et une iframe ou un worker neuf ramène la valeur d'origine. Clearcote n'a aucune couche de ce genre à débusquer. Voir comment fonctionne la détection.
Le même seed donne-t-il toujours la même empreinte ?
Oui. Le seed dérive de façon déterministe le persona et le bruit par site : le même seed donne la même identité à chaque lancement, et un nouveau seed en donne une nouvelle.
Deux comptes sur une même machine peuvent-ils avoir des empreintes canvas différentes ?
Oui, avec des seeds différents : les relectures canvas et WebGL varient selon le seed. Un profil d'appareil importé ne modifie que les valeurs déclarées, pas le rendu ; utilisez donc un seed par compte pour séparer le rendu. L'audio rendu et les client rects viennent de la machine sous-jacente et sont identiques pour toutes les identités qui y tournent.
Est-ce que cela rend l'automatisation indétectable ?
Aucun outil ne peut le promettre, et nous ne le promettons pas. Clearcote élimine les contradictions que porte habituellement un navigateur falsifié. Le comportement, la réputation de l'IP et la façon dont vous l'utilisez comptent toujours. Le test d'empreinte montre à quoi ressemble votre propre configuration.
Aller plus loin dans la documentation
Fonctionnalités associées
Un seed par compte : le même appareil à chaque session, un autre pour le compte suivant, avec des cookies et un stockage qui persistent d'une exécution à l'autre.
Le handshake TLS et les trames HTTP/2 viennent de la pile réseau propre à Chromium, et les champs dépendant de la version suivent la version de Chrome annoncée par votre persona.
Transmettez les opérations canvas et WebGL à une machine distante dotée d'un vrai GPU, pour que les pixels relus par une page correspondent au GPU annoncé par votre persona.
Définissez un proxy avec geoip activé : le fuseau horaire, les langues et WebRTC suivent l'IP de sortie. SOCKS5 avec nom d'utilisateur et mot de passe fonctionne directement sur le build sous licence.
À lire aussi
Essayer Clearcote
S'utilise tel quel avec Playwright et Puppeteer, cohérent jusqu'au handshake TLS, avec un build open source comme point de départ.
Gratuit pour un navigateur avec GitHub. Sans carte.