¿Cómo detectan las trampas las pruebas de mecanografía? Así revisamos la nuestra

Las pruebas de mecanografía detectan las trampas revisando el registro de pulsaciones que hay detrás de cada puntuación. La nuestra recalcula cada resultado a partir de su registro de pulsaciones, comprueba un hash, examina la estructura y los tiempos del registro, y mantiene fuera de las clasificaciones públicas cualquier resultado cronometrado de más de 130 WPM cuyos tiempos también parezcan inusuales hasta que superes una nueva prueba. Las comprobaciones de tiempos pillan a los bots descuidados; la nueva prueba obliga a uno cuidadoso a hacerlo todo otra vez.

El primer bot que superó nuestras comprobaciones de tiempos fue el nuestro.

Nuestra herramienta de pruebas de extremo a extremo pulsaba las teclas a un intervalo fijo de 40 ms, porque eso es lo que hace un script de pruebas. El servidor recalculó el resultado, confirmó el hash y puntuó la sesión como sospechosa: varianza cero entre pulsaciones, rollover cero, tiempos de pulsación idénticos. Tuvimos que añadir una fluctuación aleatoria por palabra y pausas ocasionales "para pensar" de 80 a 300 ms antes de que nuestra propia batería de pruebas pudiera publicar un resultado con aspecto humano. La opción sigue en el código, con el nombre humanLike.

Las comprobaciones funcionan contra todo lo que no se esfuerza, y todo lo que se esfuerza puede superarlas, así que el diseño pone el peso real en una nueva prueba.

Paso uno: recalcularlo todo

Tu navegador no nos envía unas WPM. Envía el registro de pulsaciones (cada evento keydown, keyup, input y composition, con su marca de tiempo del reloj monótono performance.now()), las métricas que ha calculado y un hash SHA-256 del resultado canónico.

El servidor ejecuta el mismo código de métricas sobre el registro y compara. Si alguna cifra difiere en más de 0,01, el resultado se rechaza como metrics_mismatch. Si el hash no coincide, se rechaza como hash_mismatch. Una extensión del navegador que edita el campo de WPM, la trampa más común en las webs que se fían del cliente, falla aquí. Las mismas funciones producen la cifra de tu pantalla y la de la base de datos, y por eso nuestra página de métricas puede prometer que su ejemplo resuelto se reproduce con dos decimales.

¿Por qué no cronometrar la prueba en el servidor? Porque entonces tu puntuación incluiría la red. Cada pulsación nos llegaría un poco tarde, con un retraso que varía según tu conexión, y alguien que escribe rápido con una línea lenta perdería una velocidad que de verdad tenía. El registro nos da el reloj del cliente para la exactitud y el recálculo del servidor para la honradez.

Paso dos: ¿tiene sentido el registro?

Antes de cualquier análisis de tiempos, comprobaciones simples de la forma del envío:

  • La prueba tiene que durar al menos 15 segundos o 10 palabras. Las tandas más cortas tienen demasiado ruido para clasificarlas y son las más fáciles de inflar.
  • Un resultado no puede llegar antes de que la prueba haya podido terminar: su inicio más su propia duración. Un resultado de 60 segundos que llega veinte segundos después de empezar no ha ocurrido.
  • El número de eventos tiene que cuadrar con los caracteres escritos.
  • En el ordenador, cada evento input tiene que seguir a un keydown en menos de 50 ms. Esto pilla el texto pegado, los eventos input generados por scripts y la mayoría de las herramientas de inyección de pulsaciones, que lanzan texto sin una tecla física. Escribir con un editor de métodos de entrada (composición IME) está exento, y los resultados de móvil quedan fuera de las clasificaciones públicas.
  • Un registro sin inicio, sin final o con marcas de tiempo no monótonas está mal formado y se rechaza directamente.

Nada de esto es ingenioso, pero elimina la mayor parte del volumen.

Paso tres: ¿qué pueden revelar los tiempos de las pulsaciones?

Esta es la parte que, a propósito, no documentamos del todo: la lista de características es pública; los umbrales y los pesos, no. Un umbral publicado es una diana. Si dijéramos "se marca una desviación típica por debajo de N milisegundos", la siguiente versión de cada script añadiría N más uno. Las características que puntuamos:

El intervalo medio entre teclas y cuánto varía. Escribir de forma humana es irregular. En el estudio de 2018 de Dhakal y sus colegas con 168.960 personas, el intervalo medio entre teclas fue de unos 239 ms, con una desviación típica de unos 112 ms. Un script que escribe a un intervalo fijo casi no tiene variación; un estudio de arXiv de 2025 sobre un CAPTCHA basado en pulsaciones vio exactamente eso en su bot de prueba, que escribía con un retardo fijo de 50 ms. Es nuestra señal más fuerte, y la que hizo saltar a nuestra herramienta.

La proporción de intervalos por debajo de 40 ms. Un intervalo de 40 ms, mantenido, son 1500 caracteres por minuto, o 300 WPM a cinco caracteres por palabra. Los dedos sí producen intervalos sueltos así de cortos cuando solapan teclas durante el rollover, así que un intervalo corto no significa nada. Un registro en el que una gran proporción de los intervalos es así de corta no es escritura.

Los tiempos de pulsación. Los dedos de verdad varían en decenas de milisegundos; los eventos sintéticos suelen tener tiempos de pulsación idénticos o casi nulos, porque la herramienta lanza keydown y keyup seguidos.

La proporción de rollover. Con qué frecuencia la siguiente tecla baja antes de que suba la anterior. Dhakal midió una proporción media de rollover del 25%, con la mayoría de los más rápidos haciendo rollover en el 40 al 70% de las pulsaciones, y teclas que se solapaban 30 ms de media. Quien escribe despacio casi no lo usa, así que un resultado rápido sin rollover llama la atención. Los bots rara vez solapan teclas.

La pausa más larga, los vaivenes de velocidad de un segundo a otro y la proporción de intervalos de más de un segundo. Las personas dudan de maneras que a un script hay que decirle que imite.

Un modelo de puntuación combina todo esto y puede marcar un resultado como sospechoso. Por debajo de 130 WPM, una marca no rechaza nada por sí sola. Tu resultado nunca se te oculta; estas comprobaciones solo deciden si entra en la clasificación.

¿Pueden las trampas en una prueba de mecanografía superar las comprobaciones de tiempos?

Sí, si la trampa está hecha con cuidado. Un artículo de arXiv de enero de 2026, de David Condrey, puso a prueba detectores basados en los tiempos de pulsación pensados para distinguir el texto tecleado por personas del generado por IA. Separaban a la perfección la inyección totalmente automatizada, pero los ataques con tiempos humanos (una persona que vuelve a teclear un texto de IA, o un programa que toma los retardos de datos reales de escritura humana) eludieron los cinco clasificadores en al menos el 99,8% de los casos. El artículo trata de la detección de autoría, no de pruebas de mecanografía, pero la lección se traslada: el paso tres pilla a los descuidados y a poco más.

Nuestra propia herramienta de pruebas demuestra lo mismo a pequeña escala: una fluctuación aleatoria y unas cuantas pausas la llevaron de claramente sintética a verosímil.

Así que el paso tres es un filtro. El veredicto llega en el paso cuatro.

Paso cuatro: la prueba de verificación

Si un resultado cronometrado supera las 130 WPM y además sus tiempos parecen inusuales, lo ves y se guarda, pero queda fuera de las clasificaciones públicas hasta que superes una prueba de verificación. Es una prueba nueva de 30 segundos, y tienes que llegar al menos al 75% de la velocidad que conseguiste. Una chiripa puntual o un registro prestado no sobreviven a una segunda tanda.

¿Por qué 130 WPM? Son unas dos veces y media la media de 51,56 WPM de los datos de Dhakal, muy por encima de la mayoría de la gente, y quien de verdad escribe tan rápido puede hacerlo dos veces. Un resultado rápido repentino con tiempos raros es la forma que produce un registro prestado o un script, y si es honrado, una prueba más es un precio pequeño.

La nueva prueba es una prueba de mecanografía normal, con texto normal, no una imagen distorsionada ni una página de símbolos raros. Un texto difícil de leer frena a todo el mundo, y a quienes más frena es a las personas rápidas y honradas a las que la nueva prueba debe dar el visto bueno. Una verificación que suspenden quienes escriben rápido y honradamente es peor que ninguna. El texto normal también hace justa la comprobación: el registro de la propia prueba de verificación pasa por las mismas comprobaciones de tiempos que cualquier otro resultado.

Límites de envío y bloqueos

Los envíos tienen un límite de frecuencia: treinta por minuto por usuario con sesión iniciada y sesenta por dirección IP. Una cuenta que hace saltar las comprobaciones una y otra vez recibe un bloqueo en la sombra (shadow ban), es decir, se oculta discretamente de las clasificaciones, y tres incidencias antitrampas graves en 24 horas lo activan automáticamente. Contar las incidencias dentro de un intervalo de tiempo hace que un resultado raro nunca te cueste la cuenta, mientras que un script que falla una y otra vez se detiene enseguida.

Las clasificaciones históricas exigen además 30 minutos de escritura en la cuenta, así que una cuenta nueva con una sola tanda perfecta no puede encabezarlas.

Qué hace que te marquen sin querer

La mayoría de los resultados marcados no son trampas. Las formas honradas de hacer saltar una comprobación:

El autocorrector del móvil. Una sustitución llega como un único evento input que cambia varios caracteres. La contamos como una pulsación, la marcamos y dejamos el resultado fuera de las clasificaciones públicas con una nota, no con un rechazo.

Texto pegado. Pegar está bloqueado, y un resultado en el que se intentó queda excluido de las clasificaciones.

Cambiar de pestaña. Si el foco sale de la página durante más de dos segundos en una prueba, se marca como interrumpida; se guarda y se muestra, pero no se clasifica.

Hacer una pausa. Un intervalo de más de cinco segundos en una prueba de palabras o de citas marca el resultado como pausado. Mismo trato.

Composición IME. La escritura en japonés, coreano y chino llega mediante eventos composition, así que para ellas nos saltamos la regla del keydown. Si aun así algo parece mal, es un fallo y nos gustaría tener el registro.

Resultados sin conexión. Un resultado sincronizado más de diez minutos después de terminar se queda en tu historial sin clasificar, porque no podemos validar su reloj.

Ser rápido de verdad. Por encima de 130 WPM te encontrarás con la nueva prueba, probablemente en tu primer buen día.

Cómo reclamar

Cada exclusión muestra su motivo en tu historial. Si crees que nos hemos equivocado con un resultado o una restricción, escribe a la dirección de reclamaciones de nuestra página antitrampas desde la dirección de tu cuenta, con el enlace del resultado o la fecha y hora de la prueba. Una persona ve la repetición de las pulsaciones y responde en unos días. Las reclamaciones nunca las decide solo el modelo automático.

¿Acabamos de publicar un manual para superar las comprobaciones? En parte. La lista de características siempre se ha podido deducir del comportamiento, y los umbrales siguen siendo privados. La nueva prueba es lo que importa, y la forma de superarla es escribir.

Preguntas frecuentes

¿Cómo detectan los bots las pruebas de mecanografía?

Las buenas leen el registro de pulsaciones: si detrás de cada carácter hay una pulsación de tecla, cuánto varían los intervalos entre teclas y cómo se mantienen y se solapan las teclas. Los scripts suelen ser demasiado regulares; los bots cuidadosos pueden imitar a las personas, y por eso añadimos una nueva prueba.

¿Puede un bot superar el sistema antitrampas de una prueba de mecanografía?

Uno cuidadoso puede superar las comprobaciones de tiempos: la investigación sobre detectores basados en los tiempos de pulsación vio que unos tiempos falsificados con aspecto humano los eludían casi siempre. Por eso retenemos los resultados rápidos hasta una nueva prueba, que un bot tiene que superar otra vez con un segundo registro que pase las mismas comprobaciones.

¿Por qué mi resultado de la prueba de mecanografía no entró en la clasificación?

Normalmente por una prueba de menos de 15 segundos o 10 palabras, una pausa de más de cinco segundos, un cambio de pestaña o un resultado de más de 130 WPM pendiente de su nueva prueba. Tu historial muestra el motivo.

Fuentes