← Back to Resources

FPScanner Bot Detection Tests

This page documents the bot detection checks returned under fastBotDetectionDetails. Each entry includes a name, severity, and description. Severity indicates how strongly a test is associated with automation or bot activity.

fastBotDetectionDetails

21 detection tests
[

  {
    "name": "headlessChromeScreenResolution",
    "severity": "high",
    "description": "Detects default headless screen resolution (800x600)."
  },
    
  {
    "name": "hasWebdriver",
    "severity": "high",
    "description": "Checks whether `navigator.webdriver` is set to `true`."
  },
    
  {
    "name": "hasWebdriverWritable",
    "severity": "high",
    "description": "Checks whether the `navigator.webdriver` property is writable."
  },
    
  {
    "name": "hasSeleniumProperty",
    "severity": "high",
    "description": "Detects known Selenium side effects, such as global variables or DOM artifacts."
  },
    
  {
    "name": "hasCDP",
    "severity": "high",
    "description": "Detects side effects associated with automation via the Chrome DevTools Protocol (CDP)."
  },
    
  {
    "name": "hasPlaywright",
    "severity": "high",
    "description": "Detects Playwright-specific globals, hooks, or runtime artifacts."
  },
    
  {
    "name": "hasImpossibleDeviceMemory",
    "severity": "high",
    "description": "Flags `navigator.deviceMemory` values that fall outside the range typically returned by real browsers.."
  },
    
  {
    "name": "hasHighCPUCount",
    "severity": "high",
    "description": "Flags unusually high logical CPU counts, often observed in servers or virtual machines."
  },
    
  {
    "name": "hasMissingChromeObject",
    "severity": "high",
    "description": "Checks for missing or inconsistent `window.chrome` properties in Chromium-based environments."
  },
    
  {
    "name": "hasWebdriverIframe",
    "severity": "high",
    "description": "Checks whether `navigator.webdriver` is `true` inside an iframe context."
  },
    
  {
    "name": "hasWebdriverWorker",
    "severity": "high",
    "description": "Checks if navigator.webdriver = true inside web worker context."
  },
    
  {
    "name": "hasMismatchWebGLInWorker",
    "severity": "high",
    "description": "Detects mismatched WebGL renderer values between execution contexts."
  },
    
  {
    "name": "hasMismatchPlatformIframe",
    "severity": "high",
    "description": "Detects platform mismatches between the main page and iframe context."
  },
    
  {
    "name": "hasMismatchPlatformWorker",
    "severity": "high",
    "description": "Detects platform mismatch between main page and worker context."
  },
    
  {
    "name": "hasSwiftshaderRenderer",
    "severity": "low",
    "description": "Detects the SwiftShader software renderer, commonly seen in headless or server environments."
  },
    
  {
    "name": "hasUTCTimezone",
    "severity": "medium",
    "description": "Flags use of the UTC timezone as a weak automation signal."
  },
    
  {
    "name": "hasMismatchLanguages",
    "severity": "low",
    "description": "Detects inconsistencies between language-related browser properties (e.g., `navigator.language` and `navigator.languages`)."
  },
    
  {
    "name": "hasInconsistentEtsl",
    "severity": "high",
    "description": "Checks whether `eval.toString().length` matches the value expected for the browser claimed in the user agent."
  },
    
  {
    "name": "hasBotUserAgent",
    "severity": "high",
    "description": "Matches known bot or automation user-agent patterns."
  },
    
  {
    "name": "hasGPUMismatch",
    "severity": "high",
    "description": "Detects mismatched GPU vendor or renderer signals across collection contexts."
  },
    
  {
    "name": "hasPlatformMismatch",
    "severity": "high",
    "description": "Detects platform inconsistencies between the user agent and runtime-exposed properties."
  }
    
]