Seatext library / BotRefund evidence

How to Detect Bots by Analyzing Graphics Card Behavior: A Practical Guide

Bots can be detected by monitoring inconsistencies in graphics card performance, such as unusual rendering patterns or missing WebGL features. The WebGL Texture Constraint check identifies mismatches between a browser's claimed device profile and...

Built for advertisers who need clear, refund-ready traffic evidence.

Bots can be detected by monitoring inconsistencies in graphics card performance, such as unusual rendering patterns or missing WebGL features. The WebGL Texture Constraint check identifies mismatches between a browser's claimed device profile and its actual GPU behavior. This signal works best when cross-referenced with other browser, network, and behavioral data rather than used in isolation.

Why GPU Analysis Matters for Bot Detection

Automated browsers often run in virtual machines or headless environments that don't match the hardware they pretend to be. A script might claim it's running on a MacBook Pro with an AMD Radeon GPU, but the underlying virtual machine exposes a generic software renderer. That discrepancy is a reliable indicator of automation.

Graphics card behavior is hard to fake convincingly. Real GPUs have specific rendering quirks, texture limits, and shader precision characteristics that vary by vendor and model. Bots that spoof user-agent strings often forget to spoof the WebGL fingerprint, creating a detectable gap.

How WebGL Texture Constraint Works

The WebGL Texture Constraint check examines whether a browser's reported hardware aligns with its actual graphics capabilities. It queries the WebGL API for parameters like maximum texture size, supported extensions, and renderer strings. Then it compares those values against known profiles for the claimed device.

A normal browser reports hardware, graphics, fonts, and operating-system details that naturally fit together for that device. Virtual machines and spoofed profiles can claim one device while their graphics, fonts, audio, or processor behavior tells another story. The check looks for a mismatch that a real browsing session does not normally create.

Common GPU Anomalies That Signal Automation

  • Renderer string mismatch: The WebGL renderer reports "SwiftShader" or "llvmpipe" while the user agent claims a discrete GPU.
  • Missing extensions: Real devices support standard extensions like WEBGL_debug_renderer_info or EXT_texture_filter_anisotropic; headless browsers often lack them.
  • Texture limit anomalies: Maximum texture dimensions that don't match the claimed GPU's specifications.
  • Shader precision irregularities: Fragment shader precision values that differ from the expected hardware profile.
  • Canvas fingerprint inconsistency: Canvas rendering output that doesn't match the claimed device's known fingerprint.

Step-by-Step Detection Process

  1. Collect WebGL fingerprint: Query gl.getParameter(gl.RENDERER), gl.getParameter(gl.VENDOR), gl.getParameter(gl.VERSION), and gl.getParameter(gl.SHADING_LANGUAGE_VERSION).
  2. Query extension support: Check for WEBGL_debug_renderer_info to get unmasked renderer and vendor strings.
  3. Measure texture limits: Record MAX_TEXTURE_SIZE, MAX_CUBE_MAP_TEXTURE_SIZE, MAX_RENDERBUFFER_SIZE.
  4. Run canvas fingerprinting: Draw a standardized scene (text, gradients, shapes) and hash the resulting pixel data.
  5. Compare against device database: Match collected values against known profiles for the claimed user-agent/device combination.
  6. Flag discrepancies: Mark sessions where GPU behavior deviates from the expected profile for further review.
  7. Cross-reference with other signals: Combine GPU anomalies with behavioral data (mouse movement, click patterns, session duration) and network data (IP reputation, proxy detection).
  8. Feed into scoring model: Weight the GPU signal alongside 100+ other checks to produce a bot probability score.

Limitations and False Positives

A single anomaly is not a bot verdict. Privacy tools, travel, corporate networks, and unusual devices can produce unexpected behavior for genuine people. Legitimate scenarios that trigger GPU mismatches include:

  • Users on corporate VDI (Virtual Desktop Infrastructure) where the GPU is virtualized.
  • Privacy-focused browsers that spoof or randomize WebGL fingerprints.
  • Older devices with driver bugs that report incorrect renderer strings.
  • Users on remote desktop or cloud gaming platforms.
  • Legitimate automation like accessibility tools or testing frameworks.

BotRefund keeps this signal as evidence—not a verdict—and cross-checks it against independent browser, network, device, and behavior data. Accuracy comes from corroboration, not one browser tell.

Integration with Broader Bot Detection

GPU fingerprinting is one of 106 independent checks used to build a reliable picture of whether a visit is human or automated. Other signal categories include:

  • Click behavior: Ghost click detection, honeypot trap interactions.
  • Pointer behavior: Robotic linear mouse movements, absence of humanlike mouse tremor.
  • Speed behavior: Superhuman input speed (<1ms).
  • Path behavior: Grid-aligned movement patterns.
  • Engagement behavior: Absence of clicks or scrolling.
  • Session behavior: Unnatural session durations.

The prediction AI evaluates the complete pattern 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.

Key Facts

FactDetail
Signal nameWebGL Texture Constraint
Total independent checks106
Primary data sourceWebGL API (renderer, vendor, extensions, texture limits)
Detection principleMismatch between claimed device profile and actual GPU behavior
Common spoofing targetsUser-agent strings, navigator.platform, screen resolution
False positive sourcesVDI, privacy browsers, remote desktop, cloud gaming, driver bugs
Verdict approachEvidence weighted in AI model, not standalone rule
Reported model accuracy99% (cross-validated across all signals)
Setup timeAbout one minute to add to website
Refund lookbackGoogle Ads spend dating back to 2017

Practical Scenarios

Scenario 1: E-commerce site seeing high cart abandonment

An online retailer notices 40% of checkout sessions have WebGL renderer strings indicating SwiftShader while user agents claim Windows 10 with NVIDIA GPUs. Cross-referencing shows these sessions also lack mouse tremor and have superhuman form-fill speeds. The combined signal confirms headless browser automation targeting limited-inventory products.

Scenario 2: B2B lead generation with affiliate fraud

A software company's affiliate program pays for demo requests. GPU analysis reveals 22% of conversions come from sessions with mismatched texture limits and missing EXT_texture_filter_anisotropic support. These sessions also show grid-aligned mouse paths and zero scroll depth. The evidence supports a refund claim with the ad platform.

Scenario 3: Travel site with seasonal bot spikes

During peak booking periods, a travel site sees traffic from residential proxies with consistent GPU fingerprints across thousands of IPs. The renderer strings match a known cloud browser farm. Combined with honeypot trap triggers, this identifies a coordinated scraping operation.

Terminology

  • WebGL: JavaScript API for rendering 2D and 3D graphics in the browser without plugins.
  • Renderer string: WebGL parameter identifying the GPU driver (e.g., "ANGLE (NVIDIA GeForce RTX 3080 Direct3D11)").
  • SwiftShader: Google's software rasterizer used in headless Chrome; a strong automation indicator when unexpected.
  • llvmpipe: Mesa's software renderer common in Linux VMs without GPU passthrough.
  • Canvas fingerprinting: Technique that draws graphics to a hidden canvas and hashes the pixel output to identify device characteristics.
  • VDI: Virtual Desktop Infrastructure — corporate environments where users access virtualized desktops.
  • Headless browser: Browser running without a GUI, typically for automation (Puppeteer, Playwright, Selenium).

Frequently Asked Questions

Can bots spoof WebGL fingerprints perfectly?

Sophisticated bots can spoof basic renderer strings, but replicating the full constellation of texture limits, extension support, shader precision, and canvas rendering behavior across all GPU vendors is extremely difficult. Most bot frameworks only spoof the user agent.

Does GPU detection work on mobile devices?

Yes. Mobile GPUs (Adreno, Mali, Apple GPU) have distinct WebGL profiles. The same mismatch principle applies — a bot claiming to be an iPhone 15 but reporting a desktop renderer is immediately flagged.

How much does GPU fingerprinting slow down page load?

WebGL queries execute in milliseconds. The fingerprint collection typically adds <50ms to page load, well within acceptable performance budgets.

What if a legitimate user has an unusual GPU setup?

The signal is treated as evidence, not a verdict. Unusual but consistent GPU behavior across sessions from the same user/device builds trust. One-off anomalies trigger review, not automatic blocking.

Can this detect bots that use real residential devices?

If a bot runs on a real residential device (e.g., a compromised home computer), the GPU fingerprint will match the device. Detection then relies on behavioral signals — mouse movement, click patterns, session flow — which are harder to fake at scale.

How often should the device profile database be updated?

New GPU models and browser versions release quarterly. A maintained detection system updates its reference profiles at least monthly to avoid false positives on new hardware.

Is WebGL fingerprinting privacy-compliant?

WebGL fingerprinting reads hardware capabilities exposed by the browser API. It does not access personal data. However, some privacy regulations treat persistent identifiers carefully. Combine with consent management and data minimization practices.

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.

Learn more