Skip to main content
Blog
Blog Attacks

Pegar bots pelo jeito como se movem: detecção comportamental de cursor

Como o modelo cursor_v2 da cside pontua o movimento do mouse para pegar os bots furtivos que já passam pelos controles de fingerprint e IP.

Jun 23, 2026 11 min read
Uma trajetória de cursor azul brilhante e fluida ao lado de uma trajetória de bot vermelha e angular sobre um plano escuro.

A maior parte do tráfego automatizado é fácil de recusar. Uma verificação de user-agent e um teste de fingerprint detêm a grande maioria antes que qualquer comportamento importe. O tráfego contra o qual vale a pena projetar é aquela pequena fração que falsifica tudo isso, e esse tráfego ainda precisa fazer uma coisa que não consegue fingir com facilidade: mover um cursor como uma pessoa.

Este é um olhar sobre o cursor_v2, um detector neural compacto que pontua como um mouse de fato se moveu. Ele é pequeno o suficiente, cerca de dez mil parâmetros, para rodar em cada gesto, e nos nossos testes resiste a todos os métodos que conhecemos para sintetizar um cursor com aparência humana. Como é um modelo de segurança em produção, este artigo trata de resultados: o que ele pega, o quão pouco custa e onde estão seus limites, com honestidade. Ele não descreve os detalhes internos da decisão.

A versão curta:

  • O cursor_v2 transforma um único movimento de mouse em uma pontuação humano/bot em menos de um milissegundo, a partir de um modelo de ~10.600 parâmetros que ocupa ~0,12 MB.
  • Contra sete geradores de cursor independentes (geométricos, físicos, de imitação humana neural e trajetórias otimizadas especificamente para vencê-lo) ele marca de 86 a 100% dos movimentos de bots enquanto marca cerca de 0% dos humanos reais.
  • Em um gerador com o qual nunca foi treinado, ele alcança AUC de 0,999 contra 0,920 da geração anterior.
  • Apontamos um agente LLM em um navegador furtivo (Camoufox), um que vence a detecção em nível de fingerprint, para uma loja de teste. O cursor_v2 marcou 100% dos seus movimentos, mesmo com a humanização de movimento ativada.

O adversário contra o qual vale a pena projetar

A detecção de bots é uma pilha de filtros, e a maior parte do volume cai nos mais baratos: um user-agent claramente automatizado, um fingerprint de navegador sem interface, um IP de data center. Os bots que sobrevivem a essas camadas são os construídos por pessoas que leem a mesma pesquisa que nós. Eles rodam navegadores reais, apagam as pistas de fingerprint e roteiam por redes residenciais. Quando uma sessão dessas chega a uma página, os sinais estáticos parecem limpos.

O que sobra é comportamento. Uma pessoa real navegando por um site produz um fluxo contínuo de entradas, e o movimento humano do cursor é o produto de uma malha de controle biológica ruidosa que é genuinamente difícil de reproduzir. Um fingerprint pode ser copiado de forma exata. Copiar o jeito como uma mão move um mouse, de modo convincente e ao longo de milhares de gestos, é um problema diferente, e separado. Um bot pode ser perfeito na camada de fingerprint e se entregar no instante em que se move.

Um detector pequeno o suficiente para rodar em todos

O cursor_v2 recebe uma trajetória de cursor, as amostras que um movimento deixa ao percorrer de um ponto a outro, e devolve uma única probabilidade de que o movimento tenha sido produzido por automação. Ele é totalmente neural, exportado para ONNX, e roda em uma CPU. Sem GPU, sem chamada de serviço, sem servidor de modelo por requisição.

A razão pela qual isso importa é econômica. Um detector que você só pode se dar ao luxo de rodar em sessões suspeitas é um detector sob o qual os atacantes aprendem a se manter. Um que custa uma fração de milissegundo e um décimo de megabyte pode rodar em cada movimento de cada sessão, exatamente onde vive o sinal comportamental.

A pegada implantada:

  • Cerca de 10.600 parâmetros no total.
  • 0,74 ms por movimento em uma única thread de CPU.
  • ~0,12 MB de peso de modelo.
  • ~64 MB de memória de pico na inferência.

Com essa pegada, um único núcleo pontua na ordem de mil movimentos por segundo, barato o suficiente para ficar sempre ativo.

Todo cursor falso tem sua vizinhança

Internamente, o modelo representa cada movimento como um vetor compacto. Não expomos o que entra nessa representação, mas podemos mostrar o que sai dela. Projete uma grande amostra de movimentos em três dimensões e uma estrutura aparece sozinha: o movimento humano real ocupa uma região, e cada modo distinto de sintetizar um cursor cai em sua própria região, à parte dos humanos. Um humanizador geométrico, um modelo físico de mouse e uma rede neural treinada para imitar humanos parecem diferentes uns dos outros, e todos parecem diferentes de uma pessoa.

Em uma projeção interativa em 3-D desse embedding de movimento, os humanos formam uma única vizinhança enquanto cada gerador de bots forma sua própria nuvem separada, incluindo o modelo neural treinado diretamente em movimento humano. Os eixos da projeção são arbitrários; o que importa é que as classes se separam, não como o modelo decide.

O circuito de geradores

A separação em uma projeção é sugestiva, não prova. A verdadeira pergunta é o que o modelo implantado faz quando recebe movimento que nunca viu. Então construímos um circuito: sete formas independentes de gerar uma trajetória de cursor, pontuadas de ponta a ponta pelo modelo exato que implantamos, contra um conjunto de controle de movimentos humanos reais reservados.

As famílias se dividem em três grupos. As famílias reservadas usam um gerador com o qual o modelo nunca foi treinado, o teste justo de generalização. As famílias endurecidas são aquelas que treinamos o modelo deliberadamente para resistir, incluindo um corpus de trajetórias otimizadas por busca especificamente para evadir este detector; uma taxa de captura alta ali confirma que o endurecimento aguentou. E um piso trivial de sanidade.

Família de geradorRegimenAUCRecall @ FPR ≤ 1%Capturado @ implantado
Gerador não humanizadopiso de sanidade5000,99598,6%98,2%
Humanizador geométricoreservada5000,99999,6%99,6%
Humanizador quantizadoreservada5000,99999,6%99,6%
Modelo de movimento físicoendurecida4991,00099,4%97,0%
Imitação humana neuralendurecida5001,000100,0%100,0%
Trajetórias otimizadas para evasãoendurecida5000,99997,6%85,6%
Corpus de exploits adversáriosendurecida5001,000100,0%96,0%

Controle: 160 movimentos humanos reservados, pontuados pelo mesmo pipeline, com taxa de falsos positivos de 0,0% no limiar implantado e pontuação mediana de 0,000. Cada número de bot acima é medido contra esse mesmo controle.

Taxa de captura por gerador de bots

O dado honesto: até o corpus construído procurando trajetórias que vencem este detector é marcado 85,6% das vezes, enquanto os humanos reais são marcados em zero. A pressão adversária move o número; ela não o quebra.

O mesmo resultado visto como distribuição de pontuações: humanos e bots se acumulam em extremos opostos da escala, com muito pouco no meio. A saída humana colapsa perto de zero, os movimentos de bots agrupados de todos os geradores colapsam perto de um, e o limiar de decisão fica no vão vazio entre eles.

Distribuição de pontuações, humanos versus bots

O teste real: um navegador furtivo conduzido por um agente

Um gerador de trajetórias é um sujeito de laboratório limpo. Um navegador furtivo moderno conduzido por um agente de IA é o adversário real, então rodamos um. Construímos um crawler conduzido por LLM em cima do Camoufox, um navegador furtivo projetado especificamente para vencer a detecção em nível de fingerprint, demos a ele um objetivo e o deixamos comprar por uma loja de teste: achar um produto, adicionar ao carrinho, ir ao checkout. À medida que navegava, capturamos seus movimentos reais de mouse e pontuamos cada um com o detector implantado.

Agente CamoufoxMovimentosMarcados como botSessão marcada
Modo padrão66 (100%)sim, após 3 movimentos
Humanização de movimento ativada66 (100%)sim, após 3 movimentos

Cada movimento foi marcado, no modo padrão do agente e com sua humanização de movimento embutida explicitamente ativada. O mesmo pontuador marca menos de 1% dos movimentos humanos reais, então este não é um detector que simplesmente desconfia de tudo.

O Camoufox é excelente naquilo para que foi construído, e muito provavelmente passaria sem problemas por uma verificação baseada apenas em fingerprint. Ainda assim foi capturado, porque a furtividade na camada de fingerprint não compra furtividade na camada de movimento. As duas falham de forma independente, e essa independência é todo o propósito de rodar detecção em profundidade. Para mais sobre como essas ferramentas funcionam, veja navegadores furtivos e anti-detecção explicados e como a cside detecta agentes de IA em navegadores furtivos.

Generalizar além da distribuição de treino

Um número merece destaque, porque é o que é fácil de forjar e fácil de ler errado. Quase todo detector de cursor alcança cerca de 0,99 de AUC no tipo de movimento com que treinou; esse valor é quase sem sentido. O valor que importa é a transferência, o desempenho em um gerador que foi totalmente reservado fora do treino.

Em uma família de humanizadores com a qual nenhum modelo treinou, o cursor_v2 alcança AUC de 0,999, enquanto o detector da geração anterior cai para 0,920 e perde a maior parte de seu recall. O ganho está na generalização, não no polimento dentro da distribuição.

Comparação de AUC entre geradores

O que podemos provar, e o que não podemos

Um relatório de segurança só vale a leitura se for honesto sobre suas bordas, então aqui estão as nossas.

A precisão dentro da distribuição não é robustez. Cada número sobre movimento que o modelo já viu é quase perfeito e não nos apoiamos em nenhum deles. As afirmações aqui se apoiam em geradores reservados e em um teste ao vivo com navegador furtivo.

O resultado entre geradores é uma estimativa pontual forte, não uma garantia universal. Ele é calibrado sobre uma amostra finita de humanos reais e uma família de humanizadores reservada. Leia o 0,999 como aprovado para aquela família, não para todo cursor que existirá. A alavanca aberta honesta é a amplitude de movimento humano real para calibrar, mais do que o modelo em si.

Em produção aplicamos debounce. Um único gesto estranho nunca marca uma pessoa; o pontuador implantado espera vários movimentos pontuados como bot em sequência antes de agir. Os números deste artigo são a visão por movimento, mais dura, antes desse alisamento.

O que isso significa para times que rodam detecção

Tire as especificidades e a lição se generaliza. Os bots que importam são os que já venceram seus controles estáticos, e o jeito de pegá-los é com um sinal que falha de forma independente daquele que eles vencem. Comportamento, como uma sessão de fato se move, clica e rola, é esse sinal, e é a camada para a qual os atacantes menos orçamentam. O mesmo raciocínio percorre pegar bots que não querem ser pegos e como agentes OpenClaw contornam a detecção de bots.

O desbloqueio prático é o custo. Um modelo comportamental pequeno e rápido o suficiente para rodar em cada visitante, não só nos suspeitos, remove o ponto cego que a amostragem cria. O cursor_v2 é um desses sinais: ortogonal ao fingerprinting, barato o suficiente para ficar sempre ativo e, até agora, aguentando contra os melhores falsificadores de cursor que conseguimos construir.

Como a cside se encaixa

A cside dá a você visibilidade total sobre cada script, requisição e terceiro que toca seu site, além do sinal comportamental para distinguir usuários reais da automação escondida entre eles. O modelo de cursor é uma camada de uma pilha de detecção que já separa humanos, bots bons e agentes maliciosos na camada do navegador, onde as pistas estáticas já foram falsificadas.

Conheça a detecção de agentes de IA da cside

Avneh
AI Researcher

Making machines learn. Applied math major currently developing the next generation of bot detection models at cside.

FAQ

Frequently Asked Questions

O cursor_v2 é um pequeno modelo neural que pontua como um mouse de fato se moveu. Ele recebe uma trajetória de cursor, as amostras que um movimento deixa ao percorrer de um ponto a outro, e devolve uma única probabilidade de que o movimento tenha sido produzido por automação. Roda na CPU em menos de um milissegundo por movimento, então pode pontuar cada gesto em vez de apenas as sessões suspeitas.

Um fingerprint de navegador pode ser copiado de forma exata. O movimento humano do cursor é o produto de uma malha de controle biológica ruidosa, e reproduzir isso de modo convincente ao longo de milhares de gestos é um problema diferente e independente. Um bot pode parecer perfeito na camada de fingerprint e se entregar no instante em que se move, e por isso um sinal de movimento pega sessões que os controles estáticos deixam passar.

No nosso teste, não. Apontamos um agente LLM controlando o Camoufox, um navegador furtivo projetado para vencer a detecção em nível de fingerprint, para uma loja de teste e pontuamos seus movimentos reais de mouse. O cursor_v2 marcou 100% deles, no modo padrão e com a humanização de movimento embutida do agente ativada. A furtividade na camada de fingerprint não compra furtividade na camada de movimento.

Contra um controle reservado de movimentos humanos reais, a taxa de falsos positivos foi de 0,0% no limiar implantado, com pontuação humana mediana de 0,000. Em produção o modelo também aplica debounce: um único gesto estranho nunca marca uma pessoa, porque o modelo implantado espera vários movimentos pontuados como bot em sequência antes de agir.

Monitore e Proteja Seus Scripts de Terceiros

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Comece grátis, ou experimente o Business com um teste de 14 dias.

Interface do painel cside mostrando monitoramento de scripts e análises de segurança
Related Articles
Agende uma demonstração