Píxeles de canvas de la GPU que declaras
Cambiar la cadena de una GPU es fácil; los píxeles que esa GPU dibujaría, no. El puente de canvas reenvía las operaciones de canvas y WebGL a una máquina que realmente tiene la GPU que presenta tu persona y devuelve sus píxeles, así que una página que dibuja y lee el resultado obtiene la respuesta que daría esa GPU.
Experimental y opcional. La mayoría de las configuraciones no lo necesitan.
Un servidor de renderizado, un túnel, una opción
# on the machine with the real GPU (a Windows GPU for a Windows persona), next to a regular Chrome
# started with --remote-debugging-port=9222 --user-data-dir=<a separate folder>
# (Chrome ignores the port on its default profile)
pip install playwright
python tools/canvas-bridge-server/server.py \
--backend cdp \
--cdp-url ws://127.0.0.1:9222/devtools/browser/... \
--port 8443
# it prints the render GPU's renderer string: use it in step 3Lo más destacado
Operaciones, no grabaciones
Reenvía las llamadas de dibujo, no una biblioteca de imágenes pregrabadas, así que funcionan la mayoría de los canvas generados sobre la marcha, no solo las pruebas ya conocidas.
Las lecturas que importan
getImageData, toDataURL, readPixels y measureText devuelven la salida real del host del puente. En esa ruta se omite el ruido local; los píxeles del puente son la referencia.
Política por sitio
Pasa por el puente todos los sitios, solo una lista de permitidos donde importa la coherencia del canvas, o todos menos una lista de excluidos.
Esperar o seguir adelante
Ante un fallo de caché en frío, el modo block espera al puente y el modo local sirve el renderizado local rápido en lugar de quedarse detenido.
Desactivado salvo que lo configures
Sin una URL del puente, el renderizado es totalmente local. Si no se puede acceder al puente, Clearcote registra una advertencia y recurre al renderizado local.
Por qué un puente, y lo que cuesta
Clearcote renderiza canvas y WebGL en la GPU que el host tenga realmente. Cuando una persona declara una GPU distinta, las verificaciones que comparan los píxeles renderizados con el hardware declarado pueden notar la diferencia, y ningún software logra que una GPU emita los píxeles exactos de otra. El puente elimina la discrepancia en lugar de ocultarla: el dibujo se hace en la GPU que se declara.
El servidor de renderizado es un pequeño coordinador en Python que corre en la máquina con GPU, controla allí un navegador (un Chrome normal vía CDP, o un Clearcote headless que lanza él mismo) y reproduce las operaciones reenviadas en su canvas real. El cliente abre el socket del puente desde el proceso de renderizado, por lo que necesita --no-sandbox, que el SDK agrega cuando configuras una URL del puente.
Tiene costos reales. Una lectura de píxeles que no está en la caché del puente espera un viaje de ida y vuelta por la red (con un tiempo de espera de cinco segundos antes de recurrir al renderizado local), y cada llamada a measureText hace uno, así que mantén el host de renderizado en la misma LAN o el mismo centro de datos. Además, la identidad del canvas pasa a ser la del host de renderizado, no la del seed: todos los perfiles que comparten un host del puente comparten su hash de canvas, así que usa un host con GPU por cada grupo de identidades que quieras mantener separadas.
Para qué se usa
Personas que el host no puede renderizar
Presenta una GPU que tu máquina de automatización no tiene, y con los píxeles que le corresponden.
Servidores sin GPU
Servidores headless que, de otro modo, dibujarían con un rasterizador por software.
Personas móviles
Una persona de Android en un motor de escritorio, con renderizado desde hardware equivalente.
Clearcote está hecho para la privacidad, las pruebas, la investigación y la automatización lícita. Tú eres responsable de cómo lo usas y de respetar los términos de los sitios que visitas.
Qué plan lo incluye
Experimental e incluido en todos los planes. Tú pones el host de renderizado: una máquina con la GPU que quieres presentar (una GPU de Windows para una persona de Windows), accesible a través de una red privada.
Comparar planesPreguntas frecuentes
¿Por qué no se puede simplemente falsificar la GPU?
La cadena de la GPU sí se puede, y Clearcote lo hace. Pero una página también puede dibujar algo y leer los píxeles, y esos píxeles vienen de la GPU que hizo el dibujo. Cambiar la cadena sin cambiar los píxeles es justo el tipo de contradicción que buscan las verificaciones.
¿Qué necesito para usarlo?
Una máquina con una GPU real que haga de host de renderizado (una GPU de Windows para una persona de Windows; su GPU pasa a ser la identidad de canvas que presentan tus perfiles) y una ruta de red privada hasta ella, como Tailscale, WireGuard o un túnel SSH.
¿Es seguro?
El puente usa WebSocket en texto plano, así que úsalo solo en una red privada o a través de un túnel cifrado, y nunca expongas el puerto del puente a la internet pública. El servidor de referencia no verifica --canvas-bridge-auth, así que la red es tu control de acceso.
¿Qué canvas pasan por el puente?
Canvas 2D y WebGL, incluidas las texturas WebGL generadas de forma procedural. Las fuentes de imagen, canvas 2D, video, ImageBitmap y texturas 3D recurren al renderizado local para ese canvas, así que siguen siendo correctas, pero no pasan por el puente.
Profundiza en la documentación
Características relacionadas
Canvas, WebGL, WebGPU, audio, fuentes, pantalla y hardware derivados en el motor C++ a partir de un solo seed, con la configuración regional y la zona horaria a juego, para que cada superficie coincida con todas las demás.
Un seed por cuenta: el mismo dispositivo en cada sesión, uno distinto para la siguiente cuenta, con cookies y almacenamiento que persisten entre ejecuciones.
Ejecuta Clearcote como endpoint CDP permanente desde la imagen oficial de Docker, con serve() o una CLI, y conecta cualquier framework sin cambiar código.
El handshake TLS y los frames HTTP/2 vienen del propio stack de red de Chromium, y los campos que dependen de la versión siguen a la versión de Chrome que declara tu persona.
Lecturas relacionadas
Prueba Clearcote
Un reemplazo directo para Playwright y Puppeteer, coherente hasta el handshake TLS, con un build de código abierto para empezar.
Gratis para un navegador con GitHub. Sin tarjeta.