Bot Scanners
What Is a Bot Scanner?
Section titled “What Is a Bot Scanner?”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.
How Bot Scanners Work
Section titled “How Bot Scanners Work”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 WebDecoyWhat Bot Scanners Detect
Section titled “What Bot Scanners Detect”| Detection Type | What It Catches |
|---|---|
| WebDriver | Selenium, Puppeteer, Playwright automation |
| Headless Browsers | Chrome Headless, PhantomJS, Firefox Headless |
| AI Crawlers | GPTBot, ClaudeBot, ChatGPT-User |
| Browser Anomalies | Inconsistent navigator properties |
| Behavioral Patterns | Non-human mouse movements, instant form fills |
| Fingerprint Mismatches | Canvas, WebGL, font rendering inconsistencies |
Bot Scanner vs. Server-Side Detection
Section titled “Bot Scanner vs. Server-Side Detection”| Aspect | Bot Scanner (Client) | Server-Side Detection |
|---|---|---|
| Where it runs | Visitor’s browser | Your server |
| What it sees | Browser internals | HTTP requests |
| Detection depth | Deep browser analysis | Headers, IP, patterns |
| Bypass difficulty | Harder to evade | Easier to spoof |
| Best for | Headless browsers, automation | Scanners, scrapers |
Creating a Bot Scanner
Section titled “Creating a Bot Scanner”Step-by-Step Guide
Section titled “Step-by-Step Guide”-
Navigate to Bot Scanners
- Click Bot Scanners in the sidebar
-
Click “New Bot Scanner”
- The create scanner dialog opens
-
Configure the Scanner
Field Description Example Name Internal identifier ”Main Website Scanner” Property Associate with property ”Production Website” Sensitivity Detection strictness Medium Enabled Active/inactive Yes -
Click “Create”
- Scanner is created with a unique ID
-
Install the Snippet
- Copy the provided JavaScript snippet
- Add it to your website (see Installing the Snippet)
Scanner Configuration Example
Section titled “Scanner Configuration Example”Name: Main Website ScannerProperty: Production WebsiteSensitivity: MediumEnabled: Yes
Detection Options:✓ Detect automation✓ Detect headless browsers✓ Detect AI crawlers✓ Detect behavioral anomalies✓ Browser fingerprinting
Honeypot Options:✓ Inject form honeypot✓ Inject link honeypotDetection Options
Section titled “Detection Options”Automation Detection
Section titled “Automation Detection”Detects browser automation frameworks:
| Framework | Detection Method |
|---|---|
| Selenium WebDriver | navigator.webdriver property |
| Puppeteer | Chrome DevTools Protocol traces |
| Playwright | Browser-specific markers |
| Cypress | Test runner indicators |
Enable when: You want to catch automated testing tools and bots.
Headless Browser Detection
Section titled “Headless Browser Detection”Identifies browsers running without a visible UI:
| Signal | Description |
|---|---|
| Missing plugins | Headless browsers often have no plugins |
| Canvas fingerprint | Rendering differences |
| WebGL anomalies | Graphics processing inconsistencies |
| User agent hints | Client hints mismatches |
Enable when: Attackers use headless Chrome, PhantomJS, etc.
AI Crawler Detection
Section titled “AI Crawler Detection”Identifies AI/LLM training crawlers:
| Bot | User Agent Pattern |
|---|---|
| GPTBot | GPTBot |
| ClaudeBot | ClaudeBot |
| Google-Extended | Google-Extended |
| PerplexityBot | PerplexityBot |
| CCBot | CCBot |
Enable when: You want to detect AI training data collection.
Behavioral Analysis
Section titled “Behavioral Analysis”Monitors user behavior for non-human patterns:
| Signal | Human | Bot |
|---|---|---|
| Mouse movement | Curved, varied | Linear, precise |
| Scroll patterns | Smooth, variable | Instant jumps |
| Form filling | Takes time | Instantaneous |
| Click timing | Variable | Consistent |
Enable when: You want deeper analysis of visitor behavior.
Browser Fingerprinting
Section titled “Browser Fingerprinting”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.
Honeypot Injection
Section titled “Honeypot Injection”Bot scanners can automatically inject honeypot elements into your pages.
Form Honeypot
Section titled “Form Honeypot”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">| Behavior | Result |
|---|---|
| Field is empty | Likely human |
| Field has value | Definitely a bot |
Best for: Contact forms, signup forms, comment sections.
Link Honeypot
Section titled “Link Honeypot”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>| Behavior | Result |
|---|---|
| Link not clicked | Normal user |
| Link is followed | Bot or crawler |
Best for: Any page where you want crawler detection.
Honeypot Configuration
Section titled “Honeypot Configuration”| Option | Description |
|---|---|
| Inject into forms | Add hidden fields to all forms |
| Inject links | Add hidden links to page footer |
| Custom field names | Use realistic-looking field names |
| Injection frequency | Every page, random pages, specific pages |
Sensitivity Levels
Section titled “Sensitivity Levels”The sensitivity level determines how strictly the scanner scores visitors.
Low Sensitivity
Section titled “Low Sensitivity”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
Medium Sensitivity (Recommended)
Section titled “Medium Sensitivity (Recommended)”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
High Sensitivity
Section titled “High Sensitivity”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
Sensitivity Comparison
Section titled “Sensitivity Comparison”| Sensitivity | Score Range Flagged | False Positive Risk | Bot Detection |
|---|---|---|---|
| Low | 70-100 | Very Low | Basic |
| Medium | 50-100 | Low | Good |
| High | 30-100 | Medium | Maximum |
Installing the Bot Scanner Snippet
Section titled “Installing the Bot Scanner Snippet”Getting Your Snippet
Section titled “Getting Your Snippet”- Go to Bot Scanners
- Find your scanner in the list
- Click Copy Snippet (or the copy icon)
Snippet Format
Section titled “Snippet Format”<script src="https://cdn.webdecoy.com/scanner/v1/scanner.js" data-scanner-id="YOUR_SCANNER_ID" async></script>Installation Methods
Section titled “Installation Methods”Method 1: Direct HTML
Section titled “Method 1: Direct HTML”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>Method 2: Google Tag Manager
Section titled “Method 2: Google Tag Manager”- Create a new Custom HTML tag
- Paste the snippet
- Set trigger to All Pages
- Publish the container
Method 3: WordPress (Manual)
Section titled “Method 3: WordPress (Manual)”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; ?>Method 4: React/Next.js
Section titled “Method 4: React/Next.js”// _app.js or layout.jsimport 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" /> </> );}Method 5: Vue.js
Section titled “Method 5: Vue.js”<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>Snippet Attributes
Section titled “Snippet Attributes”| Attribute | Required | Description |
|---|---|---|
src | Yes | CDN URL for scanner |
data-scanner-id | Yes | Your unique scanner ID |
async | Recommended | Non-blocking load |
data-exclude-paths | Optional | Paths to skip (comma-separated) |
data-sample-rate | Optional | Percentage of visitors to scan (1-100) |
Verifying Installation
Section titled “Verifying Installation”- Load your website in a browser
- Open Developer Tools (F12)
- Go to the Network tab
- Look for
scanner.jsrequest - Check Console for any errors
Managing Bot Scanners
Section titled “Managing Bot Scanners”Viewing Scanner List
Section titled “Viewing Scanner List”Go to Bot Scanners to see all scanners:
| Column | Description |
|---|---|
| Name | Scanner identifier |
| Enabled | Active status toggle |
| Methods | HTTP methods monitored |
| Created | Creation date |
| Actions | Edit, delete, copy snippet |
Enabling/Disabling a Scanner
Section titled “Enabling/Disabling a Scanner”- Find the scanner in the list
- Toggle the Enabled switch
- Scanner is immediately active/inactive
Editing a Scanner
Section titled “Editing a Scanner”- Click the menu (three dots)
- Select Edit
- Modify settings
- Click Save
Deleting a Scanner
Section titled “Deleting a Scanner”- Click the menu (three dots)
- Select Delete
- Confirm deletion
- Scanner and snippet stop working immediately
Best Practices
Section titled “Best Practices”- ✅ Start with Medium sensitivity
- ✅ Enable honeypot injection
- ✅ Test on staging before production
- ✅ Monitor false positive rates
- ✅ Combine with server-side detection
Don’ts
Section titled “Don’ts”- ❌ 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
Recommended Configuration
Section titled “Recommended Configuration”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 - RecommendedBot Scanner Pro
Section titled “Bot Scanner Pro”Bot Scanner Pro provides enhanced detection for sophisticated AI browsers like Stagehand, Browserbase, and Playwright with stealth plugins.
Lite vs Pro Comparison
Section titled “Lite vs Pro Comparison”| Feature | Lite | Pro |
|---|---|---|
| Script size | ~12KB | ~16KB |
| Detection latency | Immediate | Immediate + 5s behavioral update |
| Behavioral tracking | Basic | Advanced (raw coordinates) |
| Canvas fingerprint | Existence check | Full hash |
| WebGL fingerprint | VERSION only | Deep (UNMASKED_*, extensions) |
| Audio fingerprint | No | Yes |
| Best for | High-traffic pages | Login, checkout, sensitive pages |
When to Use Pro
Section titled “When to Use Pro”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 Detection Signals
Section titled “Pro Detection Signals”Behavioral Analysis
Section titled “Behavioral Analysis”Pro tracks mouse movements, clicks, scrolls, and keystrokes to detect non-human patterns:
| Signal | Points | Description |
|---|---|---|
| Low mousemove count | +25 | Fewer than 10 mouse events |
| Linear paths | +20 | Mouse moves in straight lines |
| Constant velocity | +15 | No speed variation |
| Grid-aligned moves | +15 | Exact coordinate positions |
| Instant clicks | +30 | No delay after mouse movement |
| No pre-movement | +25 | Clicks without mouse activity |
WebGL Deep Fingerprinting
Section titled “WebGL Deep Fingerprinting”| Signal | Points | Description |
|---|---|---|
| SwiftShader renderer | +30 | Software rendering (headless) |
| No unmasked renderer | +15 | GPU info hidden |
| Low extension count | +10 | Fewer than 10 WebGL extensions |
Audio Fingerprinting
Section titled “Audio Fingerprinting”| Signal | Points | Description |
|---|---|---|
| AudioContext unavailable | +15 | API missing or blocked |
| Zero fingerprint | +25 | Mocked AudioContext |
| Missing baseLatency | +10 | Chrome 74+ should have this |
Installing Pro Scanner
Section titled “Installing Pro Scanner”<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>Two-Phase Detection
Section titled “Two-Phase Detection”Pro uses a two-phase approach:
- Phase 1 (Immediate): Basic detection signals sent on page load
- Phase 2 (5 seconds): Behavioral analysis sent after user interaction
This catches bots that leave immediately AND provides deep analysis for those that stay.
Expected Detection Rates
Section titled “Expected Detection Rates”| AI Browser Type | Lite | Pro |
|---|---|---|
| Stagehand + Browserbase | ~20% | ~60-70% |
| Playwright + Stealth | ~40% | ~75% |
| Basic Puppeteer | ~70% | ~90% |
| Commercial anti-detect | ~10% | ~40% |
CDN URLs
Section titled “CDN URLs”| Version | URL |
|---|---|
| Pro Minified | https://cdn.webdecoy.com/bot-detection/v1/pro/bot-detection-pro.min.js |
| Pro Source | https://cdn.webdecoy.com/bot-detection/v1/pro/bot-detection-pro.js |
| Lite Minified | https://cdn.webdecoy.com/bot-detection/v1/bot-detection.min.js |
| Lite Source | https://cdn.webdecoy.com/bot-detection/v1/bot-detection.js |
Next Steps
Section titled “Next Steps”Connect third-party services for automated response:
- Integrations - Cloudflare, Slack, webhooks