Skip to content

Bot Scanners

A bot scanner is a JavaScript-based detection system that runs in visitors’ browsers. It analyzes browser characteristics and behavior to identify automated tools, headless browsers, and bots.

Visitor loads your page
Bot Scanner JavaScript executes
├── Checks for WebDriver
├── Detects headless browsers
├── Analyzes browser fingerprint
├── Monitors behavior patterns
└── Checks honeypot interactions
Bot score calculated (0-100)
Detection sent to WebDecoy
Detection TypeWhat It Catches
WebDriverSelenium, Puppeteer, Playwright automation
Headless BrowsersChrome Headless, PhantomJS, Firefox Headless
AI CrawlersGPTBot, ClaudeBot, ChatGPT-User
Browser AnomaliesInconsistent navigator properties
Behavioral PatternsNon-human mouse movements, instant form fills
Fingerprint MismatchesCanvas, WebGL, font rendering inconsistencies
AspectBot Scanner (Client)Server-Side Detection
Where it runsVisitor’s browserYour server
What it seesBrowser internalsHTTP requests
Detection depthDeep browser analysisHeaders, IP, patterns
Bypass difficultyHarder to evadeEasier to spoof
Best forHeadless browsers, automationScanners, scrapers

  1. Navigate to Bot Scanners

    • Click Bot Scanners in the sidebar
  2. Click “New Bot Scanner”

    • The create scanner dialog opens
  3. Configure the Scanner

    FieldDescriptionExample
    NameInternal identifier”Main Website Scanner”
    PropertyAssociate with property”Production Website”
    SensitivityDetection strictnessMedium
    EnabledActive/inactiveYes
  4. Click “Create”

    • Scanner is created with a unique ID
  5. Install the Snippet

Name: Main Website Scanner
Property: Production Website
Sensitivity: Medium
Enabled: Yes
Detection Options:
✓ Detect automation
✓ Detect headless browsers
✓ Detect AI crawlers
✓ Detect behavioral anomalies
✓ Browser fingerprinting
Honeypot Options:
✓ Inject form honeypot
✓ Inject link honeypot

Detects browser automation frameworks:

FrameworkDetection Method
Selenium WebDrivernavigator.webdriver property
PuppeteerChrome DevTools Protocol traces
PlaywrightBrowser-specific markers
CypressTest runner indicators

Enable when: You want to catch automated testing tools and bots.

Identifies browsers running without a visible UI:

SignalDescription
Missing pluginsHeadless browsers often have no plugins
Canvas fingerprintRendering differences
WebGL anomaliesGraphics processing inconsistencies
User agent hintsClient hints mismatches

Enable when: Attackers use headless Chrome, PhantomJS, etc.

Identifies AI/LLM training crawlers:

BotUser Agent Pattern
GPTBotGPTBot
ClaudeBotClaudeBot
Google-ExtendedGoogle-Extended
PerplexityBotPerplexityBot
CCBotCCBot

Enable when: You want to detect AI training data collection.

Monitors user behavior for non-human patterns:

SignalHumanBot
Mouse movementCurved, variedLinear, precise
Scroll patternsSmooth, variableInstant jumps
Form fillingTakes timeInstantaneous
Click timingVariableConsistent

Enable when: You want deeper analysis of visitor behavior.

Builds a fingerprint from browser characteristics:

  • Canvas rendering
  • WebGL renderer
  • Audio context
  • Font enumeration
  • Screen properties
  • Timezone/language

Enable when: You want to track returning visitors and detect fingerprint anomalies.


Bot scanners can automatically inject honeypot elements into your pages.

Adds hidden form fields that humans can’t see or fill:

<!-- Injected automatically by bot scanner -->
<input type="text"
name="website_url"
style="position:absolute;left:-9999px"
tabindex="-1"
autocomplete="off">
BehaviorResult
Field is emptyLikely human
Field has valueDefinitely a bot

Best for: Contact forms, signup forms, comment sections.

Adds hidden links that only bots follow:

<!-- Injected automatically by bot scanner -->
<a href="/trap-path-abc123"
style="display:none;visibility:hidden">
Secret Link
</a>
BehaviorResult
Link not clickedNormal user
Link is followedBot or crawler

Best for: Any page where you want crawler detection.

OptionDescription
Inject into formsAdd hidden fields to all forms
Inject linksAdd hidden links to page footer
Custom field namesUse realistic-looking field names
Injection frequencyEvery page, random pages, specific pages

The sensitivity level determines how strictly the scanner scores visitors.

Score threshold: 70+ to flag as bot False positives: Very rare Detection rate: Catches obvious bots

Best for:

  • Sites with privacy-conscious users
  • When false positives are unacceptable
  • Initial testing

Detects:

  • Obvious automation (WebDriver present)
  • Known headless browsers
  • Honeypot interactions

Score threshold: 50+ to flag as suspicious False positives: Rare Detection rate: Good balance

Best for:

  • Most websites
  • Production environments
  • General protection

Detects:

  • Everything in Low, plus:
  • Browser inconsistencies
  • Behavioral anomalies
  • Fingerprint mismatches

Score threshold: 30+ to flag as suspicious False positives: Possible Detection rate: Maximum detection

Best for:

  • High-security applications
  • Financial services
  • When false positives are acceptable

Detects:

  • Everything in Medium, plus:
  • Subtle automation indicators
  • Minor behavioral differences
  • Edge-case browser configurations
SensitivityScore Range FlaggedFalse Positive RiskBot Detection
Low70-100Very LowBasic
Medium50-100LowGood
High30-100MediumMaximum

  1. Go to Bot Scanners
  2. Find your scanner in the list
  3. Click Copy Snippet (or the copy icon)
<script src="https://cdn.webdecoy.com/scanner/v1/scanner.js"
data-scanner-id="YOUR_SCANNER_ID"
async>
</script>

Add the snippet before the closing </body> tag:

<!DOCTYPE html>
<html>
<head>
<title>Your Site</title>
</head>
<body>
<!-- Your content -->
<!-- WebDecoy Bot Scanner -->
<script src="https://cdn.webdecoy.com/scanner/v1/scanner.js"
data-scanner-id="abc123def456"
async>
</script>
</body>
</html>
  1. Create a new Custom HTML tag
  2. Paste the snippet
  3. Set trigger to All Pages
  4. Publish the container

Add to your theme’s footer.php:

<?php if (!is_admin()) : ?>
<script src="https://cdn.webdecoy.com/scanner/v1/scanner.js"
data-scanner-id="abc123def456"
async>
</script>
<?php endif; ?>
// _app.js or layout.js
import Script from 'next/script';
export default function App({ Component, pageProps }) {
return (
<>
<Component {...pageProps} />
<Script
src="https://cdn.webdecoy.com/scanner/v1/scanner.js"
data-scanner-id="abc123def456"
strategy="afterInteractive"
/>
</>
);
}
App.vue
<template>
<div id="app">
<router-view />
</div>
</template>
<script>
export default {
mounted() {
const script = document.createElement('script');
script.src = 'https://cdn.webdecoy.com/scanner/v1/scanner.js';
script.setAttribute('data-scanner-id', 'abc123def456');
script.async = true;
document.body.appendChild(script);
}
};
</script>
AttributeRequiredDescription
srcYesCDN URL for scanner
data-scanner-idYesYour unique scanner ID
asyncRecommendedNon-blocking load
data-exclude-pathsOptionalPaths to skip (comma-separated)
data-sample-rateOptionalPercentage of visitors to scan (1-100)
  1. Load your website in a browser
  2. Open Developer Tools (F12)
  3. Go to the Network tab
  4. Look for scanner.js request
  5. Check Console for any errors

Go to Bot Scanners to see all scanners:

ColumnDescription
NameScanner identifier
EnabledActive status toggle
MethodsHTTP methods monitored
CreatedCreation date
ActionsEdit, delete, copy snippet
  1. Find the scanner in the list
  2. Toggle the Enabled switch
  3. Scanner is immediately active/inactive
  1. Click the menu (three dots)
  2. Select Edit
  3. Modify settings
  4. Click Save
  1. Click the menu (three dots)
  2. Select Delete
  3. Confirm deletion
  4. Scanner and snippet stop working immediately

  • ✅ Start with Medium sensitivity
  • ✅ Enable honeypot injection
  • ✅ Test on staging before production
  • ✅ Monitor false positive rates
  • ✅ Combine with server-side detection
  • ❌ Use High sensitivity without testing
  • ❌ Block users based solely on scanner results
  • ❌ Install multiple scanners on the same page
  • ❌ Forget to update snippet when changing scanners
Detection Options:
✓ Detect automation - Essential
✓ Detect headless - Essential
✓ Detect AI crawlers - Recommended
✓ Behavioral analysis - Recommended
✓ Fingerprinting - Optional (privacy considerations)
Honeypot Options:
✓ Form honeypot - Highly recommended
✓ Link honeypot - Recommended

Bot Scanner Pro provides enhanced detection for sophisticated AI browsers like Stagehand, Browserbase, and Playwright with stealth plugins.

FeatureLitePro
Script size~12KB~16KB
Detection latencyImmediateImmediate + 5s behavioral update
Behavioral trackingBasicAdvanced (raw coordinates)
Canvas fingerprintExistence checkFull hash
WebGL fingerprintVERSION onlyDeep (UNMASKED_*, extensions)
Audio fingerprintNoYes
Best forHigh-traffic pagesLogin, checkout, sensitive pages

Use Bot Scanner Pro when you need to detect:

  • AI browsers (Stagehand, Browserbase) that use real Chromium
  • Stealth automation (Playwright/Puppeteer with stealth plugins)
  • Commercial anti-detect browsers that bypass basic checks

Pro tracks mouse movements, clicks, scrolls, and keystrokes to detect non-human patterns:

SignalPointsDescription
Low mousemove count+25Fewer than 10 mouse events
Linear paths+20Mouse moves in straight lines
Constant velocity+15No speed variation
Grid-aligned moves+15Exact coordinate positions
Instant clicks+30No delay after mouse movement
No pre-movement+25Clicks without mouse activity
SignalPointsDescription
SwiftShader renderer+30Software rendering (headless)
No unmasked renderer+15GPU info hidden
Low extension count+10Fewer than 10 WebGL extensions
SignalPointsDescription
AudioContext unavailable+15API missing or blocked
Zero fingerprint+25Mocked AudioContext
Missing baseLatency+10Chrome 74+ should have this
<script async src="https://cdn.webdecoy.com/bot-detection/v1/pro/bot-detection-pro.min.js"
data-aid="your-organization-uuid"
data-sid="your-scanner-uuid">
</script>

Pro uses a two-phase approach:

  1. Phase 1 (Immediate): Basic detection signals sent on page load
  2. Phase 2 (5 seconds): Behavioral analysis sent after user interaction

This catches bots that leave immediately AND provides deep analysis for those that stay.

AI Browser TypeLitePro
Stagehand + Browserbase~20%~60-70%
Playwright + Stealth~40%~75%
Basic Puppeteer~70%~90%
Commercial anti-detect~10%~40%
VersionURL
Pro Minifiedhttps://cdn.webdecoy.com/bot-detection/v1/pro/bot-detection-pro.min.js
Pro Sourcehttps://cdn.webdecoy.com/bot-detection/v1/pro/bot-detection-pro.js
Lite Minifiedhttps://cdn.webdecoy.com/bot-detection/v1/bot-detection.min.js
Lite Sourcehttps://cdn.webdecoy.com/bot-detection/v1/bot-detection.js

Connect third-party services for automated response: