Fingerprint Pro Internals
Collector s33

Brave detection

the navigator.brave object Brave exposes

Group: Browser identity · signal map · run it live

// s33 — sig_s33_brave
// module cm, stage3, codes 0
//
// measures
//   Navigator.prototype.brave Navigator.prototype.connection window.braveEthereum window.braveSolana
//   document.featurePolicy Navigator.prototype navigator.webkitPersistentStorage
//   navigator.webkitTemporaryStorage window.BatteryManager window.webkitMediaStream
//   window.webkitResolveLocalFileSystemURL window.webkitSpeechGrammar
// engine
//   undefined
// reported value
//   value
// probes
//   "Google" "cardano" "ethereum" "solana"
// compares against
//   === 0 >= 2 >= 5 in "BatteryManager" in "brave" in "braveEthereum" in "braveSolana"
//   in "connection" in "webkitMediaStream" in "webkitPersistentStorage"
//   in "webkitResolveLocalFileSystemURL" in "webkitSpeechGrammar" in "webkitTemporaryStorage"
// decides on
//   !fn11()
//   (v320 = document.featurePolicy) == null
//   fn11: fn9(["webkitPersistentStorage" in navigator, "webkitTemporaryStorage" in navigator, (navigator.vendor || "").indexOf("Google") === 0, "webkitResolveLocalFileSys…
//
// 1 owned helper inlined below.
// shared with other collectors, see agent.clean.js:
//   fn11:419 fn36:1793 fn9:252

// agent.clean.js:1708
function sig_s33_brave() {
  var v320;
  if (!fn11()) {
    return h_s33_fn(false);
  }
  try {
    const v321 = Navigator.prototype,
      v322 =
        ((v320 = document.featurePolicy) == null ? undefined : v320.features)?.call(v320) || [];
    return h_s33_fn(
      fn36([
        "brave" in v321,
        "braveSolana" in window,
        "braveEthereum" in window,
        ["cardano", "solana", "ethereum"].some((arg259) => v322.includes(arg259)),
        !("connection" in v321),
      ]) >= 2,
    );
  } catch (v323) {
    return h_s33_fn(false);
  }
}

// agent.clean.js:5020
function h_s33_fn(arg627) {
  return { s: 0, v: arg627 };
}