All articles Advanced signals

Detecting Anti-Detect Browsers

An anti-detect browser is purpose-built to lie about who it is. Tools in this category let a single operator spin up hundreds of browser profiles, each with a different canvas hash, user agent, timezone, WebGL renderer, and font list, so that a fraud team can run a stable of fake identities from one machine without them linking together. They are the professional-grade tooling behind multi-accounting, promo abuse, and bonus abuse.

The naive assumption is that these tools defeat fingerprinting. They defeat weak fingerprinting that trusts each attribute at face value. They struggle against detection that looks for consistency, because faking one signal is easy and faking dozens of signals in perfect mutual agreement is very hard. This article covers how to exploit that gap.

What anti-detect browsers manipulate

These tools give operators knobs for nearly every observable attribute:

  • Canvas, WebGL, and audio outputs, randomized or spoofed per profile.
  • User agent, platform, and hardware concurrency.
  • Screen resolution, color depth, and available fonts.
  • Timezone, language, and locale.
  • WebRTC behavior and IP, usually paired with residential proxies.

Each value, examined alone, looks entirely plausible. That is the whole design. Detection has to move up a level, from the values themselves to the relationships between them.

Consistency is the weak point

A real device is internally coherent because all its attributes derive from the same underlying hardware, OS, and browser build. An anti-detect browser assembles its identity from a menu, and the pieces frequently disagree:

  • Platform mismatch. A user agent claiming Windows while the WebGL renderer string reports an Apple GPU, or a macOS platform with a font list that only exists on Windows.
  • Locale conflict. A timezone in one region, a language in another, and an IP in a third, with no plausible story connecting them.
  • API contradictions. Touch-event support advertised on a desktop form factor, or a mobile user agent with a desktop-sized viewport and no touch.
  • Version skew. A user agent version whose feature set does not match the JavaScript APIs actually present in the runtime.

None of these is conclusive alone. Together they form a pattern that legitimate devices almost never exhibit. The cross-checking discipline is the same one that powers confidence scoring.

Catching the spoofing artifacts

Beyond inconsistency, the act of spoofing leaves its own fingerprint. Randomizing a signal is not the same as producing a real one, and the difference is detectable:

  • Canvas noise. Canvas spoofing that injects per-read randomization produces a value that changes between two consecutive reads in the same session, which real hardware never does. See how canvas fingerprinting works.
  • Audio instability. The same technique applied to AudioContext yields a run-to-run variance no genuine device shows.
  • Entropy anomalies. A spoofed attribute often lands in a statistically improbable region, an impossibly rare font set or a WebGL parameter combination never seen on real hardware. This ties into browser fingerprinting entropy.
  • Property descriptor tells. Overridden native functions sometimes reveal themselves through altered toString output or unexpected property descriptors, the same class of check used in detecting automation frameworks.

A useful stability test: read a rendering signal twice and compare.

function isCanvasRandomized() {
  const render = () => {
    const c = document.createElement("canvas");
    const ctx = c.getContext("2d");
    ctx.textBaseline = "top";
    ctx.font = "14px Arial";
    ctx.fillText("prynt-stability-probe", 2, 2);
    return c.toDataURL();
  };
  return render() !== render(); // true => per-read noise, a spoofing tell
}

Scoring the anti-detect profile

Convert these observations into a weighted judgment rather than a binary. Each inconsistency and artifact contributes to a suspect score with attached reason codes:

ObservationWeightReason code
Canvas or audio unstable across readsHighsignal_randomization
Platform vs GPU vs font disagreementHighattribute_inconsistency
Timezone / language / IP conflictMediumlocale_mismatch
Improbable entropy regionMediumanomalous_entropy
Native function tamperingHighapi_tampering

Pair this with network analysis, since anti-detect operations almost always route through proxies to complete the disguise, and with an identity graph that links the profiles back to a common origin despite their surface differences. A tamper-evident sealed result keeps the verdict trustworthy when it reaches your backend.

Frequently asked questions

What is an anti-detect browser?

It is a browser built to spoof or randomize its fingerprint so one machine can present many distinct, seemingly unrelated identities. Fraud operations use them to run multi-accounting, promo abuse, and bonus abuse at scale.

Can you detect an anti-detect browser directly?

Not by any single attribute, since each value looks plausible. You detect them by catching the inconsistencies between spoofed signals and the artifacts the spoofing itself leaves behind.

Do anti-detect browsers defeat device fingerprinting?

They defeat naive fingerprinting that trusts individual attributes. Layered detection turns their spoofing into a signal, because faking dozens of signals consistently is far harder than faking any one.

Anti-detect browsers win against systems that trust attributes one at a time and lose against systems that demand consistency. The spoofing that makes each identity look unique is exactly what betrays it: the mismatches between signals and the artifacts of randomization are patterns real devices do not produce. Turn their evasion into your detection signal. See the device fingerprinting pillar and test spoofed profiles in the playground.

Run it yourself

Prynt is open-source, self-hostable device intelligence — visitor IDs, bot & fraud Smart Signals, and behavioral biometrics you own end to end.

Keep reading