WebGL Fingerprinting
WebGL is a privacy-relevant surface. BotBrowser provides comprehensive, profile-driven protection across all WebGL fingerprint surfaces.
Prerequisites
- Familiarity with Browser Fingerprinting Explained.
- BotBrowser installed with a valid profile. See Installation.
Quick Start
chromium-browser \
--bot-profile="/path/to/profile.enc"Start with this launch to establish a clean baseline before adding extra overrides.
Overview
WebGL is a privacy-relevant API surface. BotBrowser provides profile-driven control over all WebGL output, ensuring consistent results regardless of the host GPU.
Configuration
WebGL Mode
Control WebGL behavior with the --bot-config-webgl flag:
# Use profile-defined WebGL settings (default)
--bot-config-webgl=profile
# Use real system WebGL (no protection)
--bot-config-webgl=real
# Disable WebGL entirely
--bot-config-webgl=disabledWebGL Image Noise
Enable deterministic noise on WebGL image readback:
# Enable WebGL image noise (default)
--bot-config-noise-webgl-image=true
# Disable WebGL image noise
--bot-config-noise-webgl-image=falseNoise Seed
Use --bot-noise-seed for reproducible WebGL image output:
--bot-noise-seed=42GPU Simulation for Headless Servers
On headless Linux servers without a physical GPU, BotBrowser provides full GPU context simulation (ENT Tier2). The profile’s GPU information is presented to WebGL regardless of the host’s actual hardware.
How BotBrowser Provides Protection
BotBrowser controls all WebGL output surfaces at the browser engine level: GPU identity strings, parameter values, shader output, image readback, extension availability, and precision formats. WebGL2 receives the same protections. All values are returned through the same code paths as a native browser, not through JavaScript interception.
Effect Verification
To verify protection is active:
- Launch BotBrowser with a profile and visit a fingerprint testing site such as BrowserLeaks or CreepJS .
- Confirm that the reported WebGL vendor, renderer, and parameter values match the profile configuration, not the host GPU.
- To verify reproducibility, launch two sessions with the same
--bot-noise-seedand confirm that the WebGL image fingerprint output is identical.
Troubleshooting / FAQ
| Problem | Solution |
|---|---|
| WebGL renderer shows host GPU instead of profile GPU | Verify profile is loaded with --bot-profile. Check startup logs for profile loading errors. |
| WebGL not available on headless server | GPU simulation requires ENT Tier2. Verify your license tier supports headless GPU simulation. |
| WebGL image fingerprint varies between runs | Use --bot-noise-seed with a fixed value for reproducible output. |
| Shader output reveals host OS | Ensure --bot-config-webgl=profile is active. The profile normalizes shader translation output. |
Next Steps
- Canvas Fingerprinting. 2D Canvas as a fingerprint surface.
- Performance Fingerprinting. GPU timing as a tracking vector.
- CLI Flags Reference. All WebGL and noise configuration flags.
Related documentation: Advanced Features: Multi-Layer Fingerprint Noise | Advanced Features: Graphics & Rendering Engine
Legal Disclaimer & Terms of Use • Responsible Use Guidelines . BotBrowser is for authorized fingerprint protection and privacy research only.