Behavioral Antidetect: How AI Learns from Your Mouse Movements and What to Do About It

Good Carder

Professional
Messages
938
Reaction score
533
Points
93
From a carder to carders. You bought expensive antidetect software, set up a proxy, perfectly substituted WebGL, Canvas, AudioContext, and even the font list. But the payment still failed with Fraudulent. Because you moved like a robot.

Modern antifraud systems (BioCatch, Forter, Sift) no longer rely on a static fingerprint. They analyze the dynamics of your behavior: how you move the mouse, how fast you type, how you scroll, whether you pause before submitting a form. And based on these 3,000+ parameters, they distinguish a bot from a human with up to 95% accuracy.

In this article, I'll discuss what exactly these systems collect, how to record your own movements to create a dataset, which libraries actually help emulate a human, and how to train LSTM to generate trajectories indistinguishable from real ones.

Part 1. What BioCatch, Forter, and Sift Collect and Why Antidetectives Are Powerless Against Them​

BioCatch collects over 3,000 anonymous data points — keystroke and mouse movements, touch behavior, physical device attributes, and more — as users interact with their digital banking platforms.

1.1. Three pillars of behavioral biometrics​

  • BioCatch builds risk profiles of devices in real time by analyzing behavioral signals in conjunction with device and network data to identify inconsistencies characteristic of mule activity or coordinated APP fraud campaigns.
  • Forter and Sift use behavioral analysis to assess the legitimacy of transactions, but their approach focuses more on account usage patterns in general rather than pure biomechanics.

What exactly do they measure:

ParameterWhat is being analyzedHow the bot usually makes mistakes
Mouse movementsTrajectory, speed, acceleration, jitter, rotation angles, overshoot, micro-correctionsStraight lines, constant speed, no natural "shaking"
KeystrokesDwell time, flight time, rhythm, use of TabPerfectly equal intervals between all characters
ScrollSpeed, pauses, upward returns, abrupt stopsPerfectly smooth scrolling with constant speed without stopping
Time to fill out formsTotal time, pauses between fields, errors and correctionsFilling out 10 fields in 3 seconds will result in an instant ban.
Webcam trafficMicro-movements of pupils, blinks (for video-KYC)Complete absence of micro movements or their unnatural periodicity
  • Touch behavior (mobile devices): screen pressure, swipe pattern, device rotation angle.

The main problem is that behavioral analysis is ongoing. The system doesn't check you just once when you log in. It monitors your every move throughout your entire session.

1.2. The Anatomy of Human Movement in Numbers​

To emulate a human well, you must know the numerical parameters of human behavior.

Field typeDelay between charactersDelay before the fieldPause after the field
First name / Last name50–150 ms200–500 ms200–400 ms
Email60–120 ms300–600 ms300–500 ms
Card number80–200 ms + 300–600 ms pause after 4 digits500–1000 ms500–800 ms
CVV100–250 ms400–800 ms200–400 ms
Address (street)70–150 ms500–1000 ms400–600 ms

The total time to complete a typical payment form with 8–10 fields is at least 20–40 seconds. Less than 10 seconds is a guaranteed fraud signal.

Part 2. Recording and Analysis: Collecting a Dataset of Real Sessions​

Before you can emulate someone, you need to understand how they move. The best way to do this is to record your own sessions and analyze them.

2.1. rrweb - Recording everything the user does​

rrweb (Record and Replay the Web) is an open-source library for recording and replaying web sessions. It records DOM events, not just screenshots: DOM changes, mouse movements, clicks, keyboard inputs — all with timestamps and high resolution, sufficient for creating high-quality datasets.

The basic code for recording mouse movements:

JavaScript:
<script src="https://cdn.jsdelivr.net/npm/rrweb@latest/dist/rrweb.min.js"></script>
<script>
let events = [];
let stopRecording = rrweb.record({
emit(event) { events.push(event); },
recordMouseMove: true, // Record every pixel of movement
recordScroll: true, // Record scroll
recordInput: true, // Record keyboard input
recordClick: true, // Record clicks
sampling: { mousemove: 10 } // 10 ms -> 100 points/second
});
setTimeout(() => {
stopRecording();
console.log(`${events.length} events collected`);
}, 300000); // 5 minutes
</script>

2.2. Export and manual markup​

After recording, you need to export the tracks to CSV for visual comparison. rrweb allows you to save an array of events, then filter out mouse events (type 3) and generate a CSV file with the timestamp, x, y, and target columns. You can visualize these tracks, overlay them with real movements, and mark areas with "natural" and "unnatural" behavior.

Part 3. Emulation Libraries: From Ghost Cursor to Human Mouse​

After collecting the dataset, we move on to emulation. Here are three main approaches, from the simplest to those virtually indistinguishable from humans.

3.1. Ghost Cursor (JavaScript, Puppeteer/Playwright)​

Ghost Cursor is a utility for Puppeteer that generates realistic mouse movements between coordinates. Instead of an instant jump (page.mouse.click()), Ghost Cursor moves the cursor along Bézier curves, simulating the natural trajectory of a hand.

JavaScript:
const puppeteer = require('puppeteer');
const ghostCursor = require('ghost-cursor');
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.goto('https://example.com');

const cursor = ghostCursor.createCursor(page);
await cursor.moveTo('#submit-button'); // Human-like movement
await cursor.click(); // Click with a random offset

// Ghost Cursor can overshoot and adjust
// for elements that are too far away

Ghost Cursor generates multiple points on a smooth curve, simulating the trajectory of a human hand. However, it has limitations: it doesn't emulate individual micro-movements and doesn't remember your personal style. This is sufficient for most purposes, but the most advanced antifraud systems can detect even Ghost Cursor if used in its pure form without additional randomization.

3.2. @@extra /humanize — plugin for Puppeteer and Playwright​

@@extra /humanize is a plugin that emulates human input, with a particular emphasis on mouse movements. Its key feature is built-in support for various randomization algorithms and the ability to customize the randomization based on your own statistics.

JavaScript:
const humanize = require('@extra/humanize');
await humanize.click(page, '#button', {
waitTime: 500, // pause before movement ("aiming")
moveSpeed: 0.8, // relative speed
variation: 5 // pixels offset from target
});

3.3. Human Mouse – the most realistic Python tool​

Human Mouse is a Python package that generates ultra-realistic mouse movements using Bézier curves and spline interpolation. It creates natural-looking trajectories with smooth accelerations, decelerations, and micro-jitters that are nearly indistinguishable from real human movements.

Python:
from human_mouse import HumanMouse
import pyautogui
human = HumanMouse()
# Move the mouse from the current position to (500, 500) in 0.8 seconds
human.move_to(500, 500, duration=0.8, bezier=True)
# Click with a human pattern (hover + variation)
human.click(500, 500, hover_duration=0.2, variation=5)

Other libraries for Python:
  • BezMouse is a lightweight Bezier motion simulation tool that has not triggered any detections in over 400+ hours of continuous use in one project (RuneScape bot).
  • OxyMouse is a motion generation library compatible with any browser automation framework.

Part 4. Advanced: LSTM and AI Trajectory Generation​

Ghost Cursor and Human Mouse generate "average" human movement. But if you want to be truly indistinguishable, you need your bot to move like you, not like the average person. That's what LSTMs are for.

4.1. Bumblebee – AI package for natural mouse and keyboard control​

Bumblebee is an open-source Python package that uses an RNN with an LSTM layer to generate smooth, human-like mouse trajectories. The generated paths are enriched with natural noise and variable speed, creating movements that are as close as possible to real human behavior.

Bumblebee's main advantage over static libraries is that it learns from your data. You record your session via rrweb, convert the tracks into a training dataset, and the model generates new trajectories that are statistically indistinguishable from your original ones.

4.2. Creating a training dataset​

To train LSTM, you need a labeled dataset of real mouse trajectories. You can use:
  • Your own recordings via rrweb (the more the better – at least 50 sessions of 5–10 minutes each).
  • Public datasets like SapiMouse (from Microsoft research).
  • Data from crowdsourcing platforms, if you have access.

Data format for LSTM:

Input parameters of the modelWhat do they mean?
XArray of previous N points (x, y, timestamp)
andNext point (x, y)
seq_lengthThe number of previous points used to predict the next one

The longer the seq_length, the more accurately the model will replicate your movement style, but the more data you'll need (at least 1000 sequences for seq_length=30). Normalizing the coordinates is a mandatory step.

4.3. Trajectory generation using a trained model​

After training an LSTM model (for example, in PyTorch with an architecture consisting of a single 64-neuron LSTM layer and a linear output layer), you can generate new trajectories while preserving their unique behavioral signature. Adding controlled random noise (with a temperature of 0.1–0.3) will prevent pattern-based detection.

Part 5. Testing and checklist before cading​

Once you've created your emulator, you need to test it. Run it through fingerprint verification services.

5.1. Anonymity Verification Tools​


ServiceWhat is it testing?Target indicator
BrowserLeaksAll types of leaks: WebRTC, Canvas, WebGL, AudioContextNo matches with real IDs
CreepJSThe degree of uniqueness of your deviceYour device should not stand out from the noise.
Whoer.netPercentage of anonymity85–95%
PixelscanComprehensive fingerprint analysisNo red flags

Why is AudioContext important? In 2026, platforms use audio fingerprints, along with Canvas and WebGL, to create 99%+ unique identifiers across a pool of 100,000 users. If your AudioContext is disabled or incorrectly substituted, it will result in a ban.

5.2. What should be in the ideal result?​

  • Canvas and WebGL should be silently replaced, but not blocked completely. Complete blocking is the first and most glaring red flag for any antifraud program.
  • The User-Agent and headers must match. If the User-Agent states Windows 11, but the Sec-Ch-Ua-Platform states macOS, you're guaranteed a ban.
  • Time zone, language and IP must be fully synchronized.
  • Fingerprints must be consistent with each other. In 2026, platforms will verify up to five independent fingerprint sources simultaneously, including TLS ClientHello and HTTP/2 settings.

I recommend creating a standard script for testing: it should run before each important session and immediately notify you of any deviation, indicating the specific discrepancy.

5.3. Final checklist before carding​

  • Technical fingerprint tested via BrowserLeaks and Whoer.
  • WebRTC and DNS do not leak.
  • The behavioral trace is verified by recording and analyzing your test session.
  • Delays in scripts are configured with randomization.
  • Mouse movements are generated via Ghost Cursor / Human Mouse rather than instant clicks.
  • AudioContext is not disabled, but replaced correctly.
  • The LSTM model (if using) has been retrained over the last 3 months on fresh data.

Resume from a carder​

Behavioral biometrics is the new frontier. Old antidetect methods that only replaced static parameters no longer work. Today, we need to emulate dynamics: how you move the mouse, how you type, how you scroll the page.

The tools are available: Ghost Cursor and Human Mouse for basic emulation, rrweb for recording and analysis, Bumblebee and LSTM for advanced AI generation. The main rule is: don't be lazy in testing. Every time before hit data, run your profile through all available fingerprint verification tools. A behavioral error costs you a card. And a persistent error costs you an entire pool.

A quick one-line reminder:
"BioCatch collects 3000 parameters per session. Ghost Cursor hides an instant click behind a Bézier curve. LSTM teaches your bot to move like you. rrweb records the standard. And BrowserLeaks catches those who think Canvas and WebGL are everything. Behavior is the final frontier." "Beat him and you beat the system."
 
Top