Anti-Bot

What Is Fingerprint Lie Detection?

What Is Fingerprint Lie Detection? — conceptual illustration
On this page

Fingerprint lie detection is the practice of verifying that the signals a browser reports are internally consistent and untampered, rather than trusting them at face value. Popularised by the open-source CreepJS project, it flips the problem: a spoofer can change any single value, but making all values agree with each other — and survive native-code integrity checks — is extremely hard. A detected lie is a stronger bot signal than any single fingerprint.

Quick facts

Popularised byCreepJS (abrahamjuliot)
ChecksNative-code integrity, prototype tampering, cross-property contradictions
Key trickCompare main thread vs Web Worker navigator
BeatsUA spoofing, canvas noise, property overrides
Try it/tools/browser-fingerprint-checker

The three classes of lie

1. Tampering lies. When a script overrides navigator.webdriver or HTMLCanvasElement.prototype.toDataURL, the replacement function no longer stringifies to [native code]. Checking Function.prototype.toString.call(fn) — and the integrity of toString itself — catches the patch. See function toString inspection.

2. Contradiction lies. The reported values disagree with each other: a Windows User-Agent with a Linux font set, navigator.platform of Win32 but a math signature from a different engine, userAgentData.mobile = true with maxTouchPoints = 0, or screen availWidth larger than width.

3. Scope lies. The most elegant: spawn a Web Worker and read navigator from inside it. Many spoofing tools only patch the main-thread navigator and forget the worker scope, so the two disagree. CreepJS leans heavily on this.

Why lie detection beats spoofing

Single-value spoofing assumes the vendor reads each signal independently. Lie detection assumes nothing and instead measures coherence. To pass, a scraper must present a fingerprint where every signal — UA, platform, fonts, canvas, WebGL renderer, math, timezone, languages, worker scope — corresponds to one real, existing device. That is why the durable approach is to run a genuine browser on genuine hardware (or a deeply patched build like Camoufox / CloakBrowser) rather than overriding properties at runtime.

You can see exactly which lies your own browser exposes — and the trust score they add up to — in the Browser Fingerprint Checker.

Building a coherent identity instead

The takeaway from lie detection is that the unit of stealth is the whole identity, not the individual field. Once a detector cross-checks the User-Agent against the JS engine math, the font set against the OS, the GPU string against the renderer, and the timezone against the IP geolocation, spoofing one value in isolation only creates a new contradiction. Every field you change has to be made consistent with every field you did not.

In practice that means starting from a real, internally consistent device profile and changing as little as possible — which is the approach managed scraping APIs and patched browsers such as Camoufox take. They present a coherent stack (engine, fonts, canvas, WebGL, headers, network) so there is no seam for the cross-checks to catch, rather than layering JavaScript overrides on top of a headless Chrome that still leaks its origin.

Related terms

What Is Browser Fingerprinting?
Browser fingerprinting is a technique that identifies and tracks a visitor by combining dozens of small, observable characteristics of their…
What Is Function.toString() Inspection?
Function.prototype.toString() inspection is the technique anti-bot scripts use to detect runtime JavaScript patches. Every JS function expos…
What Is Headless Browser Detection?
Headless browser detection is the set of probes anti-bot systems use to distinguish a headless or instrumented Chrome session from a real us…
What Is Canvas Fingerprinting?
Canvas fingerprinting is a browser-identification technique that asks the browser to draw an invisible image and hashes the resulting pixel …
What Is Math & JS Engine Fingerprinting?
Math fingerprinting identifies a runtime by computing transcendental functions (sin, cos, tan, exp, log, pow) at fixed inputs and reading th…
What Is Browser Fingerprinting Evasion?
Browser fingerprinting evasion is the practice of configuring an automated browser so that the combined fingerprint it presents — canvas, We…
What Is Anti-Bot Detection?
Anti-bot detection is the set of techniques websites use to distinguish automated traffic from human users — and to block, challenge, or thr…
What Is Fingerprint Clustering?
Fingerprint clustering is the practice of grouping fingerprints from millions of real visitors by similarity, then rejecting any new visitor…
How to Build an Anti-Bot Challenge
An anti-bot challenge is a client-side test — proof-of-work, fingerprint collection, or a behavioural probe — that a server issues to separa…
What Is JA4 Fingerprinting?
JA4 is a TLS client fingerprint that replaced JA3 after Chrome began randomising the order of its TLS extensions. JA3 hashed the extension l…
What Is Fingerprint Entropy?
Fingerprint entropy measures how much identifying information a browser attribute carries, expressed in bits. A signal that splits the popul…

Concept map

How Fingerprint Lie Detection connects

The terms most directly tied to this one. Hover a node to see its neighbours, click to preview, drag to rearrange.

0 terms · 0 connections
You are here · Anti-Bot
Building map…

Frequently asked questions

What is the single most common lie that gets scrapers caught?

The main-thread vs Web Worker navigator mismatch. Many automation tweaks patch window.navigator but not the worker scope, and CreepJS-style checks read both.

Does a detected lie always mean a block?

Not necessarily — vendors weight it into a score. But a tampering lie (patched native function) is high-confidence, so it usually pushes the session into a challenge or block.

How do I see my own lies?

Run the Browser Fingerprint Checker. It performs native-code integrity checks, cross-property contradiction checks, and a worker-scope comparison, then reports each finding with a trust score.

Last updated: 2026-05-28