Aller au contenu
Identité · compilée dans le moteur

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

SurfaceCe que fait Clearcote
Relecture canvas 2D et WebGLBruit par seed et par site, dans la dispersion naturelle entre vraies machines
Renderer et limites WebGLUn GPU constant sur la session, avec les limites de paramètres de ce GPU partout où cette machine peut les assurer
WebGPULe même adaptateur que WebGL : par défaut, les deux API désignent le même GPU
AudioLa fréquence d'échantillonnage et la latence d'AudioContext suivent le persona ; les échantillons rendus restent exacts
Polices et voix de synthèseLes jeux de polices et de voix du persona
Matériel et écranhardwareConcurrency, 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 heureAccept-Language, navigator.language, Intl et le fuseau horaire concordent
User agent et client hintsMarque, version, plateforme, bitness et modèle, fournis par le moteur
TLSLe ClientHello suit la version de Chrome annoncée par le persona
Indices d'automatisationnavigator.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 offres

FAQ

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

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.