Profils et persistance
Conservez la même identité d'une exécution à l'autre : réutilisez un seed d'empreinte, gardez cookies et stockage dans un répertoire de profil, ou restituez les valeurs capturées sur un vrai Chrome.
Importer un profil de vrai Chrome
Au lieu de la persona synthétique dérivée de la seed, vous pouvez faire en sorte que Clearcote renvoie les valeurs capturées sur une vraie machine. Capturez un profil sur un Chrome donneur avec le collecteur situé dans tools/fingerprint-collect (ouvrez collect.html, cliquez sur « Capture » et il télécharge un profil JSON), ou partez du jeu de données open source chrome-fingerprints (10k enregistrements) avec le convertisseur fourni convert_dataset.py. La capture couvre navigator, la géométrie de l’écran, le vendor/renderer WebGL + les limites getParameter, Web Audio, les voix de synthèse vocale, les polices, les codecs et les caractéristiques CSS @media.
Passez le profil au SDK sous forme de chemin de fichier, d’objet ou de chaîne JSON — il se charge pour vous de l’empaquetage gzip + base64. Les champs présents dans le profil remplacent ce que le navigateur renverrait sinon ; les champs absents retombent sur les valeurs par défaut du navigateur. Le SDK déduit aussi Accept-Language du navigator.languages du profil si vous n’en définissez pas explicitement. Les deux builds lisent les profils importés ; sur le build sous licence, ils s’appliquent intégralement à partir de la 151 r19.
Ne passez pas de seed fingerprint en plus d’un profil. La seed active la couche de farbling, qu’un scoring strict interprète comme une manipulation du canvas, et elle ne vous apporte rien que le profil ne fournisse déjà. Utilisez l’un ou l’autre. Un profil ne remplace que les valeurs renvoyées — il ne change jamais ce qui produit vos pixels : deux comptes sur deux profils différents, sur la même machine, produisent donc toujours un canvas identique. Si vous avez besoin de séparer le rendu par compte, utilisez une seed par compte et aucun profil.
from clearcote import launch
browser = launch(fingerprint_profile="profile.json", disable_gpu_fingerprint=True, fingerprint_noise=False)
page = browser.new_page()
page.goto("https://example.com")
browser.close()Profils & persistance
Conservez une identité stable d’une exécution à l’autre en réutilisant la même seed fingerprint, et faites persister cookies/stockage avec un répertoire user-data :
from clearcote import launch_persistent_context
ctx = launch_persistent_context(r"C:\clearcote\profiles\acme", fingerprint="acme-tenant-7", headless=False)
page = ctx.pages[0] if ctx.pages else ctx.new_page()Les cookies d’un répertoire de profil sont chiffrés avec une clé liée à la machine qui l’a créé. Pour copier un profil sur une autre machine sans perdre ses cookies, passez portableProfile: true / portable_profile=True (la clé voyage avec le profil) ou encryptionKey / encryption_key (la clé est dérivée de votre secret, et rien de sensible n’est écrit sur le disque). Build sous licence, Python & Node.
Le SDK gère aussi des personas enregistrées : un Profile stocke les options d’empreinte, les paramètres de proxy, les paramètres du canvas bridge et d’autres options de lancement au format JSON dans ~/.clearcote/profiles (modifiable via CLEARCOTE_PROFILE_DIR).
from clearcote import Profile, launch, launch_persistent_context
Profile("acct-1", {
"fingerprint": "acct-1",
"gpu_vendor": "Google Inc. (Intel)",
"gpu_renderer": "ANGLE (Intel, Intel(R) UHD Graphics ... D3D11)",
"canvas_bridge": {"url": "ws://127.0.0.1:8443", "auth": "user:secret"},
}).save()
ctx = launch_persistent_context(r"C:\clearcote\profiles\acct-1", profile="acct-1")
browser = launch(profile="acct-1", headless=False)Les profils enregistrés sont stockés en clair et peuvent contenir des identifiants comme canvasBridge.auth. Traitez les fichiers de profil comme des entrées de confiance, et ne les commitez ni ne les partagez.