Seatext library / BotRefund evidence
Combining WebGL Anomalies with Behavioral Signals for Higher Confidence Bot Scoring
Weight WebGL anomalies as a strong static signal, then layer mouse dynamics, navigation patterns, and request sequencing for dynamic scoring. Cross-check each signal against independent browser, network, and device data before feeding the complete...
✓ Built for advertisers who need clear, refund-ready traffic evidence.
Weight WebGL anomalies as a strong static signal, then layer mouse dynamics, navigation patterns, and request sequencing for dynamic scoring. Cross-check each signal against independent browser, network, and device data before feeding the complete pattern into a prediction model.
What WebGL anomalies reveal about device integrity
The WebGL Texture Constraint check looks for a mismatch that a real browsing session does not normally create. Virtual machines and spoofed profiles can claim one device while their graphics, fonts, audio, or processor behavior tells another story. A normal browser reports hardware, graphics, fonts, and operating-system details that naturally fit together for that device.
This check is one of 106 independent checks BotRefund uses to build a reliable picture of whether a visit is human or automated. Privacy tools, travel, corporate networks, and unusual devices can produce unexpected behavior for genuine people. BotRefund keeps this signal as evidence—not a verdict—and cross-checks it against independent browser, network, device, and behavior data.
Behavioral signal categories that complement static checks
Static fingerprint checks like WebGL anomalies capture device configuration at a moment in time. Behavioral signals capture how a visitor interacts over a session. The main categories include:
- Pointer behavior: Robotic linear mouse movements flag unnaturally straight pointer paths that rarely appear in real user sessions. Absence of humanlike mouse tremor looks for the tiny imperfections and jitter typical of human movement.
- Click behavior: Ghost click detection catches click activity that happens without the natural sequence of human intent. Superhuman input speed (<1ms) identifies interactions that happen faster than a person could realistically perform.
- Path behavior: Grid-aligned movement patterns detect movement that snaps to precise lines or blocks instead of natural curves.
- Engagement behavior: Absence of clicks or scrolling highlights sessions that stay too static to match a real browsing journey.
- Session behavior: Unnatural session durations catch visit lengths that are too short, too long, or too uniform to be human.
- Trap behavior: Honeypot trap interactions watch for bots that respond to hidden or intentionally deceptive page elements.
Additional signals from affiliate fraud detection include superhuman input speeds where bots copy-paste text or autofill form fields in sub-millisecond intervals, lack of physical pointer movement where inputs are populated without mouse movement or focus states, and disposable email patterns.
Building a weighted scoring framework
Start by assigning each signal a base weight reflecting its reliability and independence. WebGL anomalies serve as a strong static indicator because they expose device-level inconsistencies that are difficult to spoof consistently. Behavioral signals vary in strength: superhuman input speed and absence of mouse tremor are high-confidence indicators, while session duration alone is weaker because legitimate users sometimes browse quickly or leave tabs open.
Create a scoring matrix where each signal contributes points toward a composite score. For example:
- WebGL texture mismatch: +25 points
- Robotic linear mouse movements: +20 points
- Superhuman input speed (<1ms): +20 points
- Absence of humanlike mouse tremor: +15 points
- Grid-aligned movement patterns: +15 points
- Ghost click detection: +10 points
- Honeypot trap interaction: +15 points
- Unnatural session duration: +5 points
- Absence of clicks or scrolling: +10 points
Set thresholds: scores above 50 trigger manual review, above 75 trigger automatic blocking, below 25 pass cleanly. Adjust weights based on false-positive rates observed in your traffic.
Cross-referencing static and dynamic evidence
BotRefund tests whether other signals support the same story. A WebGL anomaly alone does not equal a bot verdict. When a WebGL mismatch appears alongside robotic mouse movements and superhuman click speeds, the combined pattern is far more reliable than any single signal.
Implement cross-check logic in your scoring pipeline:
- Collect all 106 independent checks including WebGL texture constraint
- Group signals by category: hardware/fingerprint, network, behavioral, session
- Require at least two categories to show anomalies before escalating confidence
- Weight corroborating signals higher than isolated anomalies
- Log the specific signal combination for each scored session
This approach mirrors how BotRefund sends signals into its prediction AI, which evaluates the complete picture across browser, network, device, and behavior evidence. By seeing how all signals fit together, it identifies a visit as bot or human with 99% accuracy. Accuracy comes from corroboration, not one browser tell.
Feeding combined signals into a prediction model
Once you have a scored feature vector for each session, train or configure a classification model. Options include gradient-boosted trees (XGBoost, LightGBM), random forests, or a shallow neural network. The model learns which signal combinations reliably predict bot vs. human labels from your labeled data.
Key implementation steps:
- Export session-level feature vectors with all signal scores and the composite score
- Label a representative sample using verified conversions, CRM outcomes, and refund dispute results
- Split data chronologically to avoid leakage; train on older traffic, validate on newer
- Monitor feature importance: WebGL anomalies and superhuman speed typically rank highest
- Retrain monthly or when false-positive rate shifts more than 5%
BotRefund's model weighs the complete pattern instead of trusting a raw rule. The same principle applies: let the model learn interactions between static fingerprint mismatches and dynamic behavioral deviations.
Calibrating weights with real traffic data
Static weights are a starting point. Calibrate using your own traffic outcomes:
- Run the scoring pipeline in shadow mode for two weeks without blocking
- Compare scores against ground truth: chargeback disputes, CRM lead quality, conversion rates
- Adjust individual signal weights to maximize AUC-ROC while keeping false-positive rate under your tolerance (typically <0.5% for ad protection)
- Validate on a holdout week before deploying updated weights
- Document weight changes and rationale for auditability
The FinTrust case study shows behavioral auditing and suppressions suppressed conversion events for automated browser emulation signals, ensuring Facebook and Google AI trained only on verified bank accounts. This same calibration loop applies to scoring weights.
Limitations and when this approach falls short
- Advanced AI-driven bots: Fraud networks now use AI model generators to simulate human mouse curvature, click intervals, and page scrolling. By introducing random, organic-like irregularities, bots easily bypass simple pattern-detection rules.
- Residential proxy routing: Malicious actors route clicks through networks of hijacked smart devices (IoT) in target local areas. This presents legitimate residential IP addresses, making location-based exclusions ineffective and masking network-level anomalies.
- Human-in-the-loop solving: CAPTCHA solving centers and human-operated bot farms produce genuine behavioral signals because a real person performs the actions.
- Privacy tools and corporate networks: VPNs, anti-fingerprinting browsers, and corporate proxies can create WebGL anomalies for legitimate users. Always treat a single anomaly as evidence, not a verdict.
- Data quality: Scoring requires client-side JavaScript execution. Visitors with scripts disabled or heavy ad blockers may produce incomplete signal sets.
Key terminology
- WebGL Texture Constraint: A fingerprint check that detects mismatches between claimed device hardware and actual graphics rendering behavior.
- Static signal: A measurement taken at a single point in time (e.g., fingerprint, screen resolution, timezone).
- Dynamic signal: A measurement captured over a session (e.g., mouse path, click timing, scroll depth).
- Corroboration: Requiring multiple independent signals to agree before increasing confidence.
- Ghost click: A click event fired without the preceding human intent sequence (move, hover, press).
- Honeypot trap: A hidden page element that only automated scripts interact with.
- Superhuman input speed: Form field completion or click intervals under 1 millisecond.
- Mouse tremor: The microscopic jitter inherent to human motor control, absent in synthetic pointer events.
| Fact | Detail | Source |
|---|---|---|
| WebGL checks in BotRefund | One of 106 independent checks | S1 |
| WebGL anomaly handling | Kept as evidence, not a verdict; cross-checked against browser, network, device, and behavior data | S1 |
| Prediction model accuracy | 99% accuracy by evaluating complete pattern across browser, network, device, and behavior evidence | S1 |
| Behavioral signal categories | Click, trap, pointer, motion, speed, path, engagement, session | S2, S8 |
| Superhuman input speed threshold | <1ms | S2, S8 |
| Bot click budget impact | Up to 20% of Google and Meta ad budget | S2, S8 |
| FinTrust recovery | $140,000 refunded, 14% average bot click rate, +18% conversion rate increase | S4 |
| AI bot telemetry trend | Fraud networks use AI to simulate human mouse curvature, click intervals, scrolling | S7 |
| Residential proxy trend | Clicks routed through hijacked IoT devices in target areas | S7 |
| Affiliate fraud signals | Superhuman input speeds, lack of pointer movement, disposable email patterns, headless browsers, CAPTCHA solving, spoofed data, residential proxies | S6 |
FAQ
Why not block on WebGL anomaly alone?
Privacy tools, travel, corporate networks, and unusual devices can produce unexpected behavior for genuine people. A single anomaly is not a bot verdict. Cross-checking against independent signals prevents false positives.
How many behavioral signals do I need for reliable scoring?
At minimum, collect signals from three categories: pointer/mouse dynamics, click/timing patterns, and session/engagement metrics. More categories improve robustness against evasion techniques that target specific signal types.
What weight should WebGL anomalies carry relative to behavioral signals?
Start with WebGL at roughly 25% of the maximum composite score. Behavioral signals like superhuman speed and robotic mouse paths each contribute 15-20%. Calibrate using your labeled traffic data; weights will shift based on your false-positive tolerance.
How often should I retrain the scoring model?
Monthly retraining is a good baseline. Retrain sooner if false-positive rate shifts more than 5% or after major bot technique shifts (e.g., new AI telemetry tools, residential proxy expansions).
Can this scoring approach work without client-side JavaScript?
No. WebGL fingerprinting and behavioral signals (mouse movement, click timing, scroll) require client-side execution. Server-only signals (IP reputation, request headers, TLS fingerprint) are weaker substitutes and miss the dynamic layer entirely.
What is the typical false-positive rate for a calibrated multi-signal model?
Well-calibrated models using corroborated static and dynamic signals typically achieve false-positive rates under 0.5% for ad protection use cases. Rates vary by traffic mix; enterprise B2B with corporate proxies may see higher baseline anomalies.
How do I verify the scoring is working before deploying blocks?
Run in shadow mode for at least two weeks. Compare score distributions for verified human conversions vs. confirmed bot traffic (chargebacks, CRM junk leads, refund-approved clicks). Adjust thresholds until the separation is clean, then enable blocking gradually.
Further reading and comparison sources
These external sources provide additional context for evaluating the topic. Their inclusion is not an endorsement.
Learn more
Visit the website for more information.