La mayor parte del tráfico automatizado es fácil de rechazar. Una comprobación de user-agent y una prueba de fingerprint detienen la inmensa mayoría antes de que importe nada del comportamiento. El tráfico contra el que vale la pena diseñar es esa pequeña fracción que falsifica todo eso, y ese tráfico todavía tiene que hacer una cosa que no puede fingir con facilidad: mover un cursor como una persona.
Esto es un vistazo a cursor_v2, un detector neuronal compacto que puntúa cómo se movió realmente un ratón. Es lo bastante pequeño, unos diez mil parámetros, como para ejecutarse en cada gesto, y en nuestras pruebas resiste contra todos los métodos que conocemos para sintetizar un cursor con apariencia humana. Como es un modelo de seguridad en producción, este artículo trata de resultados: qué atrapa, lo poco que cuesta y dónde están sus límites de forma honesta. No describe los detalles internos de la decisión.
La versión corta:
- cursor_v2 convierte un solo movimiento de ratón en una puntuación humano/bot en menos de un milisegundo, a partir de un modelo de ~10.600 parámetros que ocupa ~0,12 MB.
- Frente a siete generadores de cursor independientes (geométricos, físicos, de imitación humana neuronal y trayectorias optimizadas específicamente para vencerlo) marca del 86 al 100% de los movimientos de bots mientras marca alrededor del 0% de los humanos reales.
- En un generador con el que nunca se entrenó, obtiene un AUC de 0,999 frente a 0,920 de la generación anterior.
- Apuntamos un agente LLM en un navegador sigiloso (Camoufox), uno que vence la detección a nivel de fingerprint, hacia una tienda de prueba. cursor_v2 marcó el 100% de sus movimientos, incluso con la humanización de movimiento activada.
El adversario contra el que vale la pena diseñar
La detección de bots es una pila de filtros, y la mayor parte del volumen cae en los baratos: un user-agent claramente automatizado, un fingerprint de navegador sin interfaz, una IP de centro de datos. Los bots que sobreviven a esas capas son los que construye gente que lee la misma investigación que nosotros. Ejecutan navegadores reales, eliminan las señales de fingerprint y enrutan por redes residenciales. Para cuando una sesión así llega a una página, las señales estáticas parecen limpias.
Lo que queda es el comportamiento. Una persona real navegando por un sitio produce un flujo continuo de entradas, y el movimiento humano del cursor es el resultado de un bucle de control biológico ruidoso que es genuinamente difícil de reproducir. Un fingerprint se puede copiar de forma exacta. Copiar la forma en que una mano mueve un ratón, de manera convincente y a lo largo de miles de gestos, es un problema distinto, y separado. Un bot puede ser perfecto en la capa de fingerprint y delatarse en el instante en que se mueve.
Un detector lo bastante pequeño para ejecutarse en todos
cursor_v2 toma una trayectoria de cursor, las muestras que deja un movimiento al desplazarse de un punto a otro, y devuelve una sola probabilidad de que el movimiento lo haya producido una automatización. Es totalmente neuronal, exportado a ONNX, y se ejecuta en una CPU. No hay GPU, ni llamada a un servicio, ni servidor de modelo por petición.
La razón por la que esto importa es económica. Un detector que solo puedes permitirte ejecutar en sesiones sospechosas es un detector bajo el cual los atacantes aprenden a mantenerse. Uno que cuesta una fracción de milisegundo y una décima de megabyte puede ejecutarse en cada movimiento de cada sesión, que es exactamente donde vive la señal de comportamiento.
La huella desplegada:
- Unos 10.600 parámetros en total.
- 0,74 ms por movimiento en un solo hilo de CPU.
- ~0,12 MB de peso de modelo.
- ~64 MB de memoria pico en inferencia.
Con esa huella, un solo núcleo puntúa del orden de mil movimientos por segundo, lo bastante barato como para estar siempre activo.
Cada cursor falso tiene su vecindario
Internamente, el modelo representa cada movimiento como un vector compacto. No exponemos qué entra en esa representación, pero sí podemos mostrar qué sale de ella. Proyecta una gran muestra de movimientos a tres dimensiones y aparece una estructura por sí sola: el movimiento humano real ocupa una región, y cada forma distinta de sintetizar un cursor cae en su propia región, apartada de los humanos. Un humanizador geométrico, un modelo físico de ratón y una red neuronal entrenada para imitar humanos se ven distintos entre sí, y todos se ven distintos de una persona.
En una proyección interactiva en 3-D de ese embedding de movimiento, los humanos forman un único vecindario mientras que cada generador de bots forma su propia nube separada, incluido el modelo neuronal entrenado directamente con movimiento humano. Los ejes de la proyección son arbitrarios; lo importante es que las clases se separan, no cómo decide el modelo.
El circuito de generadores
La separación en una proyección es sugerente, no una prueba. La verdadera pregunta es qué hace el modelo desplegado cuando se le entrega movimiento que nunca ha visto. Así que construimos un circuito: siete formas independientes de generar una trayectoria de cursor, puntuadas de extremo a extremo a través del modelo exacto que desplegamos, frente a un conjunto de control de movimientos humanos reales reservados.
Las familias se dividen en tres grupos. Las familias reservadas usan un generador con el que el modelo nunca se entrenó, la prueba justa de generalización. Las familias endurecidas son aquellas que entrenamos deliberadamente al modelo para resistir, incluido un corpus de trayectorias optimizadas mediante búsqueda específicamente para evadir este detector; una tasa de captura alta ahí confirma que el endurecimiento aguantó. Y un suelo trivial de cordura.
| Familia de generador | Régimen | n | AUC | Recall @ FPR ≤ 1% | Capturado @ desplegado |
|---|---|---|---|---|---|
| Generador sin humanizar | suelo de cordura | 500 | 0,995 | 98,6% | 98,2% |
| Humanizador geométrico | reservada | 500 | 0,999 | 99,6% | 99,6% |
| Humanizador cuantizado | reservada | 500 | 0,999 | 99,6% | 99,6% |
| Modelo de movimiento físico | endurecida | 499 | 1,000 | 99,4% | 97,0% |
| Imitación humana neuronal | endurecida | 500 | 1,000 | 100,0% | 100,0% |
| Trayectorias optimizadas para evasión | endurecida | 500 | 0,999 | 97,6% | 85,6% |
| Corpus de exploits adversarios | endurecida | 500 | 1,000 | 100,0% | 96,0% |
Control: 160 movimientos humanos reservados, puntuados a través de la misma canalización, con una tasa de falsos positivos del 0,0% en el umbral desplegado y una puntuación mediana de 0,000. Cada número de bot anterior se mide frente a ese mismo control.

El dato honesto: incluso el corpus construido buscando trayectorias que venzan a este detector se marca el 85,6% de las veces, mientras que los humanos reales se marcan en cero. La presión adversaria mueve el número; no lo rompe.
El mismo resultado visto como distribución de puntuaciones: humanos y bots se acumulan en extremos opuestos de la escala, con muy poco en medio. La salida humana se colapsa cerca de cero, los movimientos de bots agrupados de todos los generadores se colapsan cerca de uno, y el umbral de decisión queda en el hueco vacío entre ellos.

La prueba real: un navegador sigiloso controlado por un agente
Un generador de trayectorias es un sujeto de laboratorio limpio. Un navegador sigiloso moderno controlado por un agente de IA es el adversario real, así que ejecutamos uno. Construimos un rastreador impulsado por LLM sobre Camoufox, un navegador sigiloso diseñado específicamente para vencer la detección a nivel de fingerprint, le dimos un objetivo y lo dejamos comprar por una tienda de prueba: encontrar un producto, añadirlo al carrito, ir al pago. A medida que navegaba, capturamos sus movimientos reales de ratón y puntuamos cada uno con el detector desplegado.
| Agente Camoufox | Movimientos | Marcados como bot | Sesión marcada |
|---|---|---|---|
| Modo predeterminado | 6 | 6 (100%) | sí, tras 3 movimientos |
| Humanización de movimiento activada | 6 | 6 (100%) | sí, tras 3 movimientos |
Se marcó cada movimiento, en el modo predeterminado del agente y con su humanización de movimiento integrada explícitamente activada. El mismo puntuador marca menos del 1% de los movimientos humanos reales, así que no es un detector que simplemente desconfíe de todo.
Camoufox es excelente en aquello para lo que está construido, y muy probablemente pasaría sin problema una comprobación basada solo en fingerprint. Aun así fue capturado, porque el sigilo en la capa de fingerprint no compra sigilo en la capa de movimiento. Las dos fallan de forma independiente, y esa independencia es el sentido completo de ejecutar la detección en profundidad. Para más sobre cómo funcionan estas herramientas, ve navegadores sigilosos y anti-detección explicados y cómo cside detecta agentes de IA en navegadores sigilosos.
Generalizar más allá de la distribución de entrenamiento
Un número merece destacarse, porque es el que resulta fácil de falsear y fácil de malinterpretar. Casi cualquier detector de cursor obtiene alrededor de 0,99 de AUC en el tipo de movimiento con el que se entrenó; esa cifra es casi insignificante. La cifra que importa es la transferencia, el rendimiento en un generador que se reservó por completo del entrenamiento.
En una familia de humanizadores con la que ningún modelo se entrenó, cursor_v2 alcanza un AUC de 0,999, mientras que el detector de la generación anterior cae a 0,920 y pierde la mayor parte de su recall. La ganancia está en la generalización, no en el pulido dentro de la distribución.

Lo que podemos demostrar y lo que no
Un informe de seguridad solo vale la pena leerlo si es honesto sobre sus límites, así que aquí están los nuestros.
La precisión dentro de la distribución no es robustez. Cada número sobre movimiento que el modelo ha visto es casi perfecto y no nos apoyamos en ninguno de ellos. Las afirmaciones aquí descansan en generadores reservados y en una prueba en vivo con navegador sigiloso.
El resultado entre generadores es una estimación puntual fuerte, no una garantía universal. Está calibrado sobre una muestra finita de humanos reales y una familia de humanizadores reservada. Lee el 0,999 como aprobado para esa familia, no para cada cursor que existirá jamás. La palanca abierta honesta es la amplitud de movimiento humano real contra el que calibrar, más que el modelo en sí.
En producción aplicamos antirrebote. Un solo gesto extraño nunca marca a una persona; el puntuador desplegado espera varios movimientos puntuados como bot seguidos antes de actuar. Los números de este artículo son la vista por movimiento, más dura, antes de ese suavizado.
Qué significa esto para los equipos que ejecutan detección
Quita los detalles y la lección se generaliza. Los bots que importan son los que ya han vencido tus controles estáticos, y la forma de atraparlos es con una señal que falle de forma independiente a la que ellos vencen. El comportamiento, cómo se mueve, hace clic y se desplaza realmente una sesión, es esa señal, y es la capa para la que los atacantes presupuestan menos. El mismo razonamiento recorre atrapar bots que no quieren ser atrapados y cómo los agentes OpenClaw eluden la detección de bots.
El desbloqueo práctico es el coste. Un modelo de comportamiento lo bastante pequeño y rápido para ejecutarse en cada visitante, no solo en los sospechosos, elimina el punto ciego que crea el muestreo. cursor_v2 es una de esas señales: ortogonal al fingerprinting, lo bastante barata como para estar siempre activa y, hasta ahora, aguantando contra los mejores falsificadores de cursor que podemos construir.
Cómo encaja cside
cside te da visibilidad total sobre cada script, petición y tercero que toca tu sitio, además de la señal de comportamiento para distinguir a los usuarios reales de la automatización que se esconde entre ellos. El modelo de cursor es una capa de una pila de detección que ya separa a humanos, bots buenos y agentes maliciosos en la capa del navegador, donde las señales estáticas ya han sido falsificadas.






