1. What is ClientRects in Browser Fingerprinting
The getBoundingClientRect()
method returns the size of an element and its position relative to the viewport. Modern websites use this to fingerprint users by analyzing how JavaScript layout APIs and browser rendering calculations behave under different:
- DPI / Scaling settings
- Font loading discrepancies
- Zoom level variations
- Browser engine layout engines (e.g., Blink, WebKit, Gecko styles)
Some anti-fraud platforms observe patterns like:
- The sub-pixel accuracy of scaling
- Rounding and decimal handling of float-based layout positions
- Relative size differences between standard hidden containers used for testing
Though often overlooked, the ClientRects fingerprint can leak browser scalability behavior that’s very consistent across sessions — and extremely hard to disguise without breaking layout-related UI functionality.
2. How Platforms Detect ClientRects Fingerprints
Anti-fraud systems can fingerprint browsers by:
- Measuring box coordinates of invisible test elements: By hiding elements offscreen or permanently in layouts, they can compare expected vs. actual rect values for spoofing giveaways.
- Watching scaling behaviors during zooming: A trivial but effective approach — observers track your browser’s transformation and rect updates during a simulated “zoom” or resize and cross-reference logic.
- Floating-point calculation leakage: Tiny decimal precision differences can identify the browser engine’s internal layout engine — e.g., Chrome computes differently than Safari or Firefox.
- CSS Style Consistency: Some advanced systems exploit reflow and relayout variations caused by style updates that surface in rect data to infer browser inconsistencies.
- Font size rounding checks: Pre-rendered test elements with fixed font sizes can reveal font rendering engines, which generally tie back to OS types like Windows, macOS, or Linux/Android.
If the layout rendering floats are too mathematically “clean” or fail to vary by even the tiniest rendering rule — which FlashID creates in a realistic deviation pattern — then anti-fingerprint engines log these as anomalies.
3. How FlashID Masks ClientRects Fingerprints
Unlike platforms that only spoof high-level values, FlashID provides fine-grained layer control to simulate authentic scaling behaviors, ensuring:
- Apparent pixel math consistency, while subtly disabling traceability
- Natural randomness patterns, mimicking real rendering discrepancies
FlashID’s ClientRects fingerprint solutions include:
- ClientRect spoofing via dynamic element manipulation: FlashID injects and resolves rectangular measurements dynamically, returning custom but plausible rect values based on each browser profile.
- Adjustable rounding precision: The floating-point precision for rect dimensions can be configured slightly per session — reflecting natural browser and system behavior.
- Spoofing synchronization with CSS/Font and Zoom Modules: ClientRects spoofing works hand-in-hand with browser font, zoom, and style settings to ensure it matches extected rendering output.
- Delta variance injection: FlashID injects artificial variance into rect-based measurements to prevent session matching — but within the bounds of browser-expected rounding or layout ‘noise’.
- Avoid standard invisible DOM checks: The system simulates and computes all necessary rect values, even for hidden elements, fooling detection systems into trusting abnormal behavior.
- Measured element jittering: Per-profile, slight deviation and jitter applied to element size values gives FlashID browser instances a realistic rendering profile.
This behavioral isolation ensures that even on sites focused on deep reflow-based tracking, your FlashID browser remains uncorrelated, non-associative, and hard to trace using layout methods.
You May Also Like