Skip to content
Back to the fingerprint testResearch · source notes

Browser fingerprint detection research and sources

The public research, captured payloads, detector teardowns, and open-source projects behind the audit's claims about which fingerprint signals are read in practice.

Where these checks come from

Findings that say “read in the wild by” cite one of the sources below, with the probe name or field key so you can check the claim rather than take our word for it. Everything here is public research, and we have no vendor’s source code. Commercial detection products are listed under neutral labels rather than by name: what matters is which signals a deployed detector reads, not whose product it is.

Most checks on this page cite nothing at all, and that is the honest result: they are derived from what the web platform itself guarantees — that two APIs describing one fact have to agree — rather than from watching any particular detector.

Commercial detector A

cited by 66 checks

A deployed bytecode-VM anti-bot. Its payload script collects several hundred browser probes per page load, and a public teardown enumerates them — a ground-truth list of what a commercial detector actually reads.

Described from public research into the deployed script, not from the vendor's source or documentation. Listed under a neutral label: the point is which signals a real deployed detector reads, not whose product it is.

A public reverse-engineering writeup of the deployed script

Commercial detector B

cited by 42 checks

A deployed collector whose payloads carry 200+ fields under obfuscated keys. A public study decodes them against real captures, so each field can be traced to the browser API that produced it.

Described from public research into the deployed script, not from the vendor's source or documentation. Listed under a neutral label: the point is which signals a real deployed detector reads, not whose product it is.

A public reverse-engineering study of the deployed collector

Commercial detector C

cited by 15 checks

A deployed collector. Public research publishes a real captured payload of a couple of hundred fields, and a companion project disassembles the bytecode VM that builds it, so a field can be matched to the API that produced it.

Described from public research into the deployed script, not from the vendor's source or documentation. Listed under a neutral label: the point is which signals a real deployed detector reads, not whose product it is.

A public captured payload and VM disassembly

Commercial detector D

cited by 16 checks

A deployed sensor script. A public analysis inventories the signal categories it collects — browser fingerprint, hardware, behavioural, JavaScript environment, timing and network — so findings cite it for a category rather than a field.

The weakest of these sources: a categorised inventory rather than a decoded payload, so it establishes that a signal is read without pinning the exact probe.

A public categorised inventory of the sensor script

Device-fingerprinting service

cited by 2 checks

A commercial device-identification library. Findings cite it where its published client collects the same surface.

Described from public research into the deployed script, not from the vendor's source or documentation. Listed under a neutral label: the point is which signals a real deployed detector reads, not whose product it is.

The service's published client script

CAPTCHA provider A

cited by 1 check

A widely deployed CAPTCHA. A public project disassembles its bytecode VM and ships the real loader script, which depends on Trusted Types producing a genuine TrustedScript — the one signal cited here.

A token solver, not a signal payload, so it exposes only the surface its own loader touches. Cited by a single finding.

A public reverse-engineering project of the challenge VM

CAPTCHA provider B

cited by 1 check

A CAPTCHA whose client collects browser signals alongside the challenge.

Described from public research into the deployed script, not from the vendor's source or documentation. Listed under a neutral label: the point is which signals a real deployed detector reads, not whose product it is.

Public analysis of the deployed client

Fraud-detection vendor

cited by 1 check

A fraud-detection client script that forces relay-only WebRTC against its own TURN servers so the backend can bind the observed UDP source address to a page load. The relay-egress check on this page reproduces that technique, and we confirmed it works against our own TURN endpoint.

Second-hand provenance: we have not read the script ourselves. The mechanism was verified independently against our own TURN endpoint; the attribution was not.

A customer's incident report and their reading of the deployed script

CreepJS

cited by 38 checks

An open-source fingerprint research tool, and the origin of the lie-detection method this whole page is built on: compare a browser against itself rather than against a population.

A research tool, not a commercial detector. Where a finding names CreepJS it means the technique is demonstrated there — not that anything is scoring you with it.

Scrapfly

cited by 6 checks

A scraping-API vendor that publishes detection research and a public browser-fingerprint tool. Their write-up of the Math.tanh OS oracle — V8 swapping to std::tanh in Chrome 148, exposing the host C library's rounding — is the source of this audit's OS check; their fingerprint tool's signal inventory (EME/DRM, WebGPU, media devices) confirms which surfaces a commercial detector reads.

Rebrowser

cited by 2 checks

An open-source patch set for Puppeteer and Playwright that documents how CDP-driven automation leaks — Runtime.enable exposing execution contexts, sourceURL traces, main-world execution — and patches each. Its write-ups are the source for this audit's CDP-leak checks, read as a catalogue of what those leaks look like from the detector's side.

A stealth-tooling project, not a detector. Where a finding names Rebrowser it means the leak is documented there; the check measures the leak, it does not use their patches.

Sveba (research)

cited by 1 check

Independent research into how Chrome's DevTools Protocol gives itself away. The published walkthrough follows a single console argument down through V8's inspector — the preview call in v8-console-message.cc, the two surface-only Proxy guards in value-mirror.cc and debug-property-iterator.cc, and the point in keys.cc where the ECMAScript spec leaves the engine no choice but to call back into page script — and demonstrates it against the author's own instrumented content_shell build. It is the source for this audit's prototype-chain Proxy check, and it also documents why the older Error.stack vector stopped working.

A technique writeup, not a detector and not a decoded payload. Where a finding cites it, the claim is that the signal exists and is reachable — verified here by reproducing the probe — not that any named system is scoring you with it. The V8 source it quotes is public and can be read against the commits it names.

CloakBrowser issues

cited by 22 checks

The public issue tracker of a stealth browser. Each bug report where a detector caught the browser is a detection signal stated from the wrong side — read inverted, the tracker is a catalogue of what real anti-bots check, confirmed against a shipping product.

A bug tracker, not a detector. A cited issue establishes that some real system caught this signal against CloakBrowser; it does not name which vendor, and the reporter's diagnosis is theirs, not ours.

CloakBrowser (measured)

cited by 12 checks

The same stealth browser, but run here against this very page under a licensed Pro build and compared field-by-field with stock Chrome on the same machine. Where a finding cites this, the contradiction was observed directly rather than read about, and the value the browser actually reported is quoted in the evidence line.

One product, one machine — so it shows that a shipping browser can produce the contradiction, not in which versions or on which hosts. Where a finding is cited here it was reproduced across repeated launches and the rate is stated with it, because this browser randomises part of its profile per session and a contradiction seen once is not the same claim as one seen every time. Every baseline compared against was measured on stock Chrome on the same hardware.

FakeBrowser (collector)

cited by 7 checks

The harvesting collector a stealth tool ships to capture real devices for REPLAY. It scores nothing and detects nothing, which is what makes it a different kind of artifact from the others here: its field list is a spoofer's own statement of which surfaces it believes have to be reproduced faithfully. Read in full. Most of what it collects this audit already checked; the surfaces it reads that nothing here did became the seven compiled-API-surface rows.

A spoofing tool's own collector, not a detector and not a decoded payload — the same weak class as a vendor changelog, and worth saying so. It establishes that a stealth tool considered a surface worth harvesting and replaying; it does not name any system that reads it, and neither do the findings that cite it.

CloakBrowser Pro releases

cited by 6 checks

The shipped release notes of the same stealth browser, which are a different artifact from its issue tracker and are cited separately for that reason. An issue is a bug a user hit; a release note is the vendor stating which surface it had to bring into line with a real Chrome install. Read as a list of what was worth fixing — the Chromium 150 build names speech and language profiles, and Windows system colors and selection rendering, in one clause.

A vendor's own changelog, not a detector and not a decoded payload — the weakest kind of source cited on this page, and worth saying so. It establishes that a shipping stealth browser considered a surface worth aligning; it does not name which system reads it, and neither do the findings that cite it.

Camoufox issues

cited by 6 checks

The public issue tracker of a Firefox-based anti-detect browser. It is our one Gecko-focused source — where the others document Chromium tells, a Camoufox bug report reveals a Firefox-specific one: a Gecko surface that leaks the real host through a value the browser tried to spoof.

A bug tracker, not a detector. Because Camoufox is Firefox, each cited issue is a Gecko coherence tell that a real Firefox does not exhibit; it does not name which vendor caught it, and the reporter's diagnosis is theirs, not ours.

Camoufox (measured)

cited by 8 checks

The same Firefox-based anti-detect browser, but run here against this page and driven to specific operating-system personas rather than read about. It is the only stealth build measured here that is not Chromium, which makes it the control for whether a check works on a non-Blink engine at all — several of this page's oracles turn out to be Chromium-only and say nothing against it.

One product on one host, and a defended surface rather than a failing one: where a finding cites this, the browser handled the vector correctly and the citation records that the vector is real and actively defended, not that this browser failed it. Forcing a persona with os= is not the same as the profile a user would draw at random, so treat the OS as chosen rather than representative.