Perfiles y persistencia
Mantén la misma identidad entre ejecuciones: reutiliza un seed de huella digital, conserva las cookies y el almacenamiento en un directorio de perfil, o reporta los valores capturados de un Chrome real.
Importar un perfil de un Chrome real
En lugar de la persona sintética derivada del seed, puedes hacer que Clearcote reporte los valores capturados de una máquina real. Captura uno desde un Chrome donante con el recolector de tools/fingerprint-collect (abre collect.html, haz clic en Capture y se descarga un perfil JSON), o parte del dataset open source de 10k registros chrome-fingerprints con el conversor incluido convert_dataset.py. La captura abarca navigator, la geometría de la pantalla, vendor/renderer de WebGL + los límites de getParameter, Web Audio, las voces de síntesis de voz, las fuentes, los códecs y las características de CSS @media.
Pásale el perfil al SDK como ruta de archivo, objeto o string JSON: el SDK se encarga del empaquetado gzip + base64 por ti. Los campos presentes en el perfil reemplazan lo que el navegador reportaría de otro modo; los campos ausentes usan los valores por defecto del navegador. El SDK también deriva Accept-Language del navigator.languages del perfil cuando no defines uno explícitamente. Ambos builds leen perfiles importados; en el build con licencia se aplican por completo desde 151 r19.
No pases un seed de fingerprint junto con un perfil. El seed activa la capa de farbling, que un scoring estricto interpreta como manipulación del canvas, y no te aporta nada que el perfil no proporcione ya. Usa uno u otro. Un perfil solo sustituye los valores reportados: nunca cambia lo que renderiza tus píxeles, así que dos cuentas con dos perfiles distintos en una misma máquina siguen produciendo un canvas idéntico. Si necesitas separar el renderizado por cuenta, usa un seed por cuenta y ningún perfil.
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()Perfiles & persistencia
Mantén una identidad estable entre ejecuciones reutilizando el mismo seed de fingerprint, y conserva las cookies y el almacenamiento con un directorio de datos de usuario:
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()Las cookies de un directorio de perfil se cifran con una clave ligada a la máquina que lo creó. Para copiar un perfil a otra máquina con sus cookies intactas, pasa portableProfile: true / portable_profile=True (la clave viaja con el perfil) o encryptionKey / encryption_key (la clave se deriva de tu secreto y no se escribe nada sensible en disco). Build con licencia, Python & Node.
El SDK también tiene personas guardadas: un Profile guarda las opciones de huella digital, la configuración del proxy, la del canvas bridge y otras opciones de lanzamiento como JSON en ~/.clearcote/profiles (puedes cambiarlo con 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)Los perfiles guardados están en texto plano y pueden contener credenciales como canvasBridge.auth. Trata los archivos de perfil como entrada de confianza y no los incluyas en un commit ni los compartas.