De vraies captures, prêtes à porter
Plutôt qu’une persona synthétique dérivée d’une seed, exposez avec --fingerprint-profile les valeurs capturées sur une vraie machine Chrome — ses chaînes GPU, son écran, ses polices et ses valeurs matérielles. La bibliothèque clearcote-profiles convertit le jeu de données ouvert chrome-fingerprints (~10k captures réelles de Chrome sous Windows) en plusieurs milliers de profils cohérents, prêts à l’emploi.
72
échantillons sélectionnés et validés — GPU variés, prêts à l’emploi
~8.5k
profils dans la bibliothèque complète générée
~10k
captures réelles de Chrome dans le jeu de données source
Triés sur le volet, pas seulement convertis. Les captures réalisées en rendu logiciel (SwiftShader / llvmpipe) ou dans une VM (Parallels / VMware / VirtualBox) sont écartées — un adaptateur de VM est à lui seul un signal révélateur. Par souci de transparence, les enregistrements rejetés restent dans le dossier excluded/ du dépôt, à côté du manifeste index.json, qui étiquette chaque profil avec le fabricant et la famille de son GPU, son écran et son nombre de threads (Intel 29 · NVIDIA 34 · AMD 9 dans le jeu d’échantillons).
Ce que contient un profil — et ce qu’il laisse volontairement de côté
Les valeurs qu’il renvoie
- GPU — les chaînes vendor/renderer non masquées de WebGL, la table getParameter et la liste des extensions prises en charge
- Écran — résolution, zone disponible, profondeur de couleur, device-pixel-ratio, gamut de couleurs
- Matériel — hardwareConcurrency et deviceMemory
- Polices, voix de synthèse vocale, fréquence d’échantillonnage & latence audio
La version du navigateur (toujours à jour)
Les profils ne contiennent pas le User-Agent, la version de Chrome ni les brands UA-CH. Le jeu de données source correspond à Chrome 117, alors que Clearcote embarque un moteur bien plus récent. Importer l’ancienne version ferait annoncer 117 au navigateur alors qu’il se comporte comme sa vraie version — une incohérence détectable en elle-même. Clearcote conserve sa propre version, à jour ; seules les valeurs capturées sont empruntées.
{
"meta": { "id": "vinyzu-04201", "gpu_vendor": "Intel", "gpu_family": "Arc" },
"hardware_concurrency": 12,
"device_memory": 8,
"screen": { "width": 1920, "height": 1080, "color_depth": 24, "device_pixel_ratio": 1 },
"webgl": {
"UNMASKED_VENDOR_WEBGL": "Google Inc. (Intel)",
"UNMASKED_RENDERER_WEBGL": "ANGLE (Intel, Intel(R) Arc(TM) A770 Graphics Direct3D11 vs_5_0 ps_5_0, D3D11)"
},
"fonts": { "detected": ["Arial", "Calibri", "Cambria", "Consolas", "Segoe UI", "… 390 more"] },
"audio": { "BaseAudioContextSampleRate": 48000, "AudioContextBaseLatency": 0.01 }
}Ce que vous téléchargez réellement : chaque profil est un fichier JSON. Celui-ci provient d’un PC de bureau équipé d’une Intel Arc A770 — les valeurs déclarées par une vraie machine, capturées d’un seul tenant : une table de pilote Arc A770, 12 threads, 8 Go, un écran 1080p et 395 polices installées. 71 autres sont fournis dans samples/, ~8.5k de plus via generate.py.
Ce qu’un profil n’est pas : du matériel. Un profil modifie ce que le navigateur déclare. Il ne change pas ce qui dessine vos pixels — le canvas, le readback WebGL et l’audio proviennent toujours de la machine sur laquelle vous tournez réellement, et aucun navigateur ne peut y changer quoi que ce soit. Deux comptes qui utilisent deux profils différents sur une même machine rendent donc un canvas identique. Si chaque compte doit ressembler à une machine différente au niveau du pixel, cela passe par une seed fingerprint propre à chaque compte, pas par le profil.
Comment le configurer
Mesuré avec pixelscan et BrowserScan sur ~30 configurations. Ce sont les deux règles ci-dessous qui ont réellement fait bouger le résultat.
1Déclarer le vrai GPU
Quoi qu’il arrive, c’est votre machine hôte qui dessine les pixels. Annoncer un autre GPU, c’est faire diverger le nom et le rendu — et les scanners qui calculent un hash du rendu le sanctionnent. Activer disable_gpu_fingerprint=True aligne le GPU déclaré sur celui qui fait réellement le travail : WebGL et WebGPU basculent ensemble, si bien que les deux ne se contredisent jamais. Le profil fournit toujours l’écran, les polices et les valeurs matérielles.
2Une seed par compte — sans l’associer à un profil
À lui seul, un profil donne le même canvas à tous les comptes, car il remplace des valeurs déclarées sans jamais toucher au rendu. Le canvas propre à chaque compte vient de la seed fingerprint. Définir à la fois une seed et un profil capturé est la seule combinaison que les scanners signalent comme une manipulation (tampering) : choisissez l’un ou l’autre. Pour plusieurs comptes, choisissez la seed.
Configuration multicompte : une seed unique par compte + le vrai GPU + un proxy dédié. Laissez le bruit canvas activé — le couper supprime justement le canvas propre à chaque compte que vous venez de mettre en place.
import clearcote
# ONE ACCOUNT, ONE IDENTITY — the multi-account setup
browser = clearcote.launch(
fingerprint="acct-1", # unique per account: this is what varies the canvas
disable_gpu_fingerprint=True, # report the real GPU, so name and render agree
geoip=True, # timezone + language follow the proxy
proxy={"server": "..."}, # one per account
) # note: no fingerprint_profile — a seed replaces it
# A CAPTURED MACHINE INSTEAD — for a single identity, not a fleet
# (the repo's samples/ set works out of the box)
browser = clearcote.launch(
fingerprint_profile="samples/vinyzu-04201.json", # an Intel Arc A770 desktop
disable_gpu_fingerprint=True,
) # note: no fingerprint seed alongside itGénérer la bibliothèque complète
Le convertisseur de référence se trouve dans le dépôt du navigateur et est épinglé comme dépendance ; la sélection s’ajoute par-dessus :
pip install -r requirements.txt # dataset + canonical converter
python generate.py # -> profiles/*.json (~8.5k profiles)
python generate.py --samples 80 --out samples # regenerate the sample setVous préférez cliquer ?
Le Profile Manager parcourt cette bibliothèque pour vous — filtrée selon le fabricant du GPU de votre machine — et lance le profil choisi dans une fenêtre interactive. Sans la moindre ligne de code.

Licence & attribution. Les profils sont dérivés de chrome-fingerprints © Vinyzu : la bibliothèque est donc sous GPL-3.0 — à la différence du navigateur Clearcote lui-même, qui est sous BSD-3-Clause. Si vous la redistribuez, conservez l’attribution et la licence.
Profile Manager
Une application de bureau qui parcourt cette bibliothèque, filtrée selon le fabricant du GPU de votre machine — et lance un profil en un clic.
Flags d’empreinte
La référence complète de --fingerprint-profile et de toutes les autres options d’identité.
Pourquoi la cohérence l’emporte
Comment fonctionne réellement la détection de bots — la raison d’être de ces règles.