Capturas reales, listas para usar
En lugar de una persona sintética derivada de un seed, reporta los valores capturados en una máquina real con Chrome: sus strings de GPU, pantalla, fuentes y conteos de hardware, mediante --fingerprint-profile. La biblioteca clearcote-profiles convierte el dataset abierto chrome-fingerprints (~10k capturas reales de Chrome en Windows) en miles de perfiles coherentes y listos para usar.
72
muestras curadas y validadas — con GPU variadas, listas para usar
~8.5k
perfiles en la biblioteca completa generada
~10k
capturas reales de Chrome en el dataset de origen
Curada, no solo convertida. Se descartan las capturas hechas con renderizado por software (SwiftShader / llvmpipe) o dentro de una VM (Parallels / VMware / VirtualBox): un adaptador de VM ya delata por sí solo. Por transparencia, los registros descartados se conservan en la carpeta excluded/ del repo, junto al manifiesto index.json, que etiqueta cada perfil con el fabricante y la familia de su GPU, su pantalla y su concurrencia (Intel 29 · NVIDIA 34 · AMD 9 en el set de muestras).
Qué incluye un perfil — y qué deja fuera a propósito
Los valores que reporta
- GPU — los strings de vendor/renderer sin enmascarar de WebGL, la tabla de getParameter y la lista de extensiones soportadas
- Pantalla — resolución, área disponible, profundidad de color, device-pixel-ratio, gama de colores
- Hardware — hardwareConcurrency y deviceMemory
- Fuentes, voces de síntesis de habla, sample rate & latencia de audio
La versión del navegador (siempre al día)
Los perfiles no incluyen el User-Agent, la versión de Chrome ni las brands de UA-CH. El dataset de origen es de Chrome 117; Clearcote incluye un motor mucho más reciente. Importar la versión vieja haría que el navegador declarara 117 mientras se comporta como su versión real, y ese desajuste ya es detectable en sí mismo. Clearcote conserva su propia versión actual; solo se toman prestados los valores capturados.
{
"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 }
}Lo que realmente descargas: cada perfil es un archivo JSON. Este es un equipo de escritorio con Intel Arc A770, con los valores que reportó una máquina real capturados completos: una tabla de driver de Arc A770, 12 hilos, 8 GB, una pantalla de 1080p y 395 fuentes instaladas. Hay 71 más en samples/ y ~8.5k más con generate.py.
Lo que un perfil no es: hardware. Un perfil cambia lo que el navegador reporta. No cambia quién dibuja tus píxeles: el canvas, el readback de WebGL y el audio siguen saliendo de la máquina en la que realmente lo estás ejecutando, y ningún navegador puede cambiar eso. Por eso, dos cuentas con dos perfiles distintos en una misma máquina siguen renderizando un canvas idéntico. Si necesitas que cada cuenta parezca una máquina distinta a nivel de píxel, eso lo da un seed de fingerprint por cuenta, no el perfil.
Cómo configurarlo
Medido con pixelscan y BrowserScan en ~30 configuraciones. Estas dos reglas son las que realmente cambiaron el resultado.
1Reporta la GPU real
Tu host dibuja los píxeles de todos modos. Declarar otra GPU hace que el nombre y el render no coincidan, y los escáneres que calculan un hash de la salida renderizada lo penalizan. Activar disable_gpu_fingerprint=True hace que la GPU reportada coincida con la que hace el trabajo: mueve WebGL y WebGPU a la vez, así que nunca se contradicen entre sí. El perfil sigue aportando pantalla, fuentes y conteos de hardware.
2Un seed por cuenta — y no lo combines con un perfil
Un perfil por sí solo le da el mismo canvas a todas las cuentas, porque sustituye valores reportados y nunca toca el render. El canvas por cuenta sale del seed de fingerprint. Configurar un seed y un perfil capturado a la vez es la única combinación que los escáneres marcan como manipulación — elige uno. Para varias cuentas, elige el seed.
Configuración multicuenta: un seed único por cuenta + GPU real + su propio proxy. Deja activado el ruido de canvas: si lo desactivas, pierdes el canvas por cuenta que acabas de conseguir.
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 itGenera la biblioteca completa
El conversor canónico vive en el repo del navegador y está fijado como dependencia; la curación se aplica encima:
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 set¿Prefieres usar el mouse?
El Profile Manager recorre esta biblioteca por ti —filtrada por el fabricante de la GPU de tu host— y abre el perfil elegido como una ventana interactiva. Nada de código.

Licencia & atribución. Los perfiles derivan de chrome-fingerprints © Vinyzu, así que la biblioteca es GPL-3.0. Ojo: esto difiere del propio navegador Clearcote, que es BSD-3-Clause. Si la redistribuyes, conserva la atribución y la licencia.
Profile Manager
Una app de escritorio que recorre esta biblioteca filtrada por el fabricante de la GPU de tu host — y lanza el perfil elegido con un clic.
Flags de huella digital
La referencia completa de --fingerprint-profile y de todos los demás flags de identidad.
Por qué gana la coherencia
Cómo funciona realmente la detección de bots — el motivo por el que existen estas reglas.