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 checksA 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.
Commercial detector B
cited by 42 checksA 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.
Commercial detector C
cited by 15 checksA 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.
Commercial detector D
cited by 16 checksA 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.
Device-fingerprinting service
cited by 2 checksA 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.
CAPTCHA provider A
cited by 1 checkA 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.
CAPTCHA provider B
cited by 1 checkA 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.
Fraud-detection vendor
cited by 1 checkA 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.
CreepJS
cited by 38 checksAn 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 checksA 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 checksAn 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 checkIndependent 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 checksThe 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 checksThe 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 checksThe 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 checksThe 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 checksThe 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 checksThe 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.