Skip to content

AI Detections

WebDecoy provides comprehensive detection of AI-related activity on your website, including server-side AI crawlers, client-side browser extensions, and suspicious signals that indicate AI-assisted browsing.

AI activity falls into five main categories:

CategoryDetection MethodExamples
AI ScrapersUser-Agent analysisGPTBot, ClaudeBot, CCBot
AI Browser PluginsDOM/JavaScript analysisClaude extension, ChatGPT sidebar
Vision AI BotsForm behavior analysisClaude Computer Use, Stagehand, Browser Use
AI ToolsBehavioral signalsAutomated form filling, content extraction
Suspicious SignalsAPI monitoringWrapped fetch, modified observers
┌─────────────────────────────────────────────────────────────────┐
│ AI DETECTION LAYERS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ SERVER-SIDE CLIENT-SIDE (Pro) │
│ ─────────── ───────────────── │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ AI Scrapers │ │ Browser Plugins │ │
│ │ (User-Agent) │ │ (DOM Detection) │ │
│ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
│ │ ┌────────┴────────┐ │
│ │ │ Vision AI Bots │ │
│ │ │ (Form Behavior)│ │
│ │ └────────┬────────┘ │
│ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ AI Scraper │ │ AI Plugin + │ │
│ │ Score (0-100) │ │ Vision Flags │ │
│ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
│ └──────────────┬───────────────┘ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Detection │ │
│ │ Record │ │
│ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘

AI scrapers are bots that crawl websites to collect content for training AI models. WebDecoy detects these through User-Agent analysis and assigns an AI Scraper Score.

These crawlers explicitly collect content for AI/ML model training:

CrawlerCompanyScoreUser-Agent PatternPurpose
GPTBotOpenAI85GPTBot/1.0Training ChatGPT and GPT models
ChatGPT-UserOpenAI85ChatGPT-UserChatGPT plugins and browsing
OAI-SearchBotOpenAI80OAI-SearchBotSearchGPT content retrieval
ClaudeBotAnthropic85ClaudeBotTraining Claude models
AnthropicAnthropic85anthropic-aiAnthropic’s general crawler
CCBotCommon Crawl80CCBot/2.0Open dataset for AI training
Google-ExtendedGoogle80Google-ExtendedGemini/Bard AI training
PerplexityBotPerplexity80PerplexityBotPerplexity AI search
CohereCohere80cohere-aiCohere model training
ByteSpiderByteDance75BytespiderTikTok/Douyin AI features
Meta-ExternalAgentMeta75Meta-ExternalAgentMeta AI training
Applebot-ExtendedApple75Applebot-ExtendedApple Intelligence training
YouBotYou.com75YouBotYou.com AI search
AmazonbotAmazon70AmazonbotAlexa and Amazon AI
FacebookBotMeta70facebookexternalhitFacebook AI features
DiffbotDiffbot70DiffbotKnowledge graph extraction

Traditional search engines that may also feed AI features:

CrawlerCompanyScoreUser-Agent PatternNote
GooglebotGoogle30GooglebotPrimary search indexing
BingbotMicrosoft30bingbotBing search + Copilot
DuckDuckBotDuckDuckGo30DuckDuckBotPrivacy-focused search
ApplebotApple30ApplebotSiri and Spotlight
YandexBotYandex35YandexBotRussian search + AI
BaiduspiderBaidu40BaiduspiderChinese search + AI
CrawlerCompanyScoreUser-Agent Pattern
SemrushSemrush35SemrushBot
AhrefsAhrefs35AhrefsBot
MJ12botMajestic30MJ12bot
DotBotMoz30DotBot

Detected when used for scraping:

LibraryPatternScore
Python Requestspython-requests25
Go HTTP ClientGo-http-client25
Java HTTP ClientApache-HttpClient25
cURLcurl/20
WgetWget/20
ScrapyScrapy40

WebDecoy’s Bot Scanner detects AI browser extensions installed by visitors. These extensions inject DOM elements, global variables, and content scripts that can be identified.

High-confidence detection of major AI assistant extensions:

ExtensionDetection FlagsScore Impact
Claude Extensionclaude_extension+15 points
ChatGPT Extensionchatgpt_extension+15 points
GitHub Copilotcopilot_extension+15 points
Gemini/Bard Extensiongemini_extension+15 points
Perplexity Extensionperplexity_extension+15 points

Other AI-powered browser extensions:

ExtensionDetection FlagsScore Impact
Monica AImonica_extension+10 points
Jasper AIjasper_extension+10 points
WriteSonicwritesonic_extension+10 points
Merlin AImerlin_extension+10 points
Sider AIsider_extension+10 points
MaxAImaxai_extension+10 points

WebDecoy uses multiple techniques to detect AI browser plugins:

AI extensions inject UI elements with identifiable patterns:

// Claude extension patterns
'[class*="claude"]'
'[data-claude]'
'[data-anthropic]'
'[id*="claude-"]'
'claude-extension'
// ChatGPT extension patterns
'[class*="chatgpt"]'
'[class*="openai"]'
'[data-chatgpt]'
'chatgpt-sidebar'
// Copilot patterns
'[class*="copilot"]'
'[data-copilot]'
'github-copilot'

Extensions often expose global objects:

// Claude
window.__claude__
window.__CLAUDE__
window.__anthropic__
// ChatGPT/OpenAI
window.__chatgpt__
window.__openai__
window.chatGPTExtension
// Copilot
window.__copilot__
window.githubCopilot
// Generic AI
window.__aiAssistant__
window.__AI_EXTENSION__

Modern extensions use Shadow DOM for isolation. WebDecoy inspects:

  • Custom element tag names (<claude-assistant>, <chatgpt-sidebar>)
  • Shadow root content for AI-related patterns
  • Nested shadow DOM structures

Extensions register custom HTML elements:

// Checked custom elements
'claude-assistant'
'claude-sidebar'
'claude-popup'
'chatgpt-assistant'
'chatgpt-sidebar'
'gpt-popup'
'copilot-assistant'
'copilot-suggestion'
'perplexity-assistant'
'gemini-assistant'
'monica-assistant'
'merlin-assistant'
'sider-assistant'

Vision AI bots represent a new category of AI-assisted browsing where AI agents directly control browser interactions. Unlike traditional browser extensions that assist users, Vision AI bots operate the browser autonomously by manipulating the DOM directly.

Vision AI bots are AI systems that:

  • See the page visually using screenshots or DOM snapshots
  • Interact programmatically by setting form values directly via JavaScript
  • Skip human input patterns by not generating keyboard/mouse events
  • Operate autonomously to fill forms, click buttons, and navigate sites
┌─────────────────────────────────────────────────────────────────┐
│ VISION AI BOT INTERACTION │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Human User Vision AI Bot │
│ ────────── ────────────── │
│ │
│ Keyboard → keydown event DOM Manipulation │
│ → keyup event element.value = "text" │
│ → input event ↓ │
│ → value changes input event only │
│ (no keyboard events!) │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Detection: Field has content but ZERO keyboard events │ │
│ │ Confidence: 90% | Score Impact: +40 points │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Bot/ToolTypeDetection Method
Claude Computer UseAI AgentDOM manipulation, no keyboard events
StagehandBrowser AutomationDOM manipulation, synthetic events
Browserbase AgentsCloud BrowserDOM manipulation, headless signals
Playwright AITesting FrameworkDOM manipulation, automation flags
Browser UseAI Agent FrameworkDOM manipulation, programmatic clicks

WebDecoy uses two complementary techniques to detect Vision AI bots:

  1. Ghost Click Detection - Clicks at positions where the mouse was never near
  2. FormAnalyzer - Form fields with content but no keyboard events

Real users must move their mouse to a position before clicking there. Vision AI bots using element.click() or browser automation APIs can click anywhere without prior mouse movement.

┌─────────────────────────────────────────────────────────────────┐
│ GHOST CLICK DETECTION │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Human User Vision AI Bot │
│ ────────── ────────────── │
│ │
│ 1. Move mouse to button 1. Find element via DOM │
│ 2. Hover over button 2. Call element.click() │
│ 3. Click button 3. No mouse movement at all! │
│ │
│ Mouse path recorded: Mouse path recorded: │
│ ▸ (100,50) → (150,80) → click ▸ click at (150,80) │
│ (no prior movements!) │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Detection: Click with NO mouse activity within 100px │ │
│ │ Confidence: 95% | Score Impact: +45 points │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘

Key features:

  • Tracks mouse position history with timestamps
  • Checks if mouse was within 100px of click position in the 2 seconds before click
  • Immediate detection: Sends alert instantly when 2+ ghost clicks detected (doesn’t wait for behavioral phase)
  • Works even if page navigates away immediately after click

WebDecoy’s FormAnalyzer tracks keyboard events per form field and compares them against actual content:

// FormAnalyzer tracks per-field keyboard activity
{
"email_field": {
keydownCount: 0, // No keydown events
keyupCount: 0, // No keyup events
inputCount: 1, // One input event (from DOM manipulation)
pasteCount: 0, // No paste events
contentLength: 25 // But field has 25 characters!
}
}
PatternDetectionConfidenceScore
Content without keyboardField has content but zero keydown/keyup events90%+40
High DOM manipulation ratioMore input events than keyboard events75%+25
Abnormal keydown/keyup ratioRatio outside 0.5-2.0 range60%+15
Multiple DOM manipulations3+ fields with suspicious patterns+20

Real humans have variable typing rhythms. Bots often have:

  • Zero variance in keystroke timing
  • Superhuman speed (< 30ms between keystrokes)
  • Perfect consistency across all fields

When Vision AI activity is detected, these flags are added:

FlagMeaningScore ImpactConfidence
ghost_clicksClicks at positions with no prior mouse activity+4595%
form_dom_manipulationField content set via DOM, not keyboard+4090%
high_dom_manipulation_ratioMixed DOM/keyboard with suspicious ratio+2575%
instant_clicksClicks with no delay after mouse stops+3085%
clicks_no_pre_movementClicks without preceding mouse movement+2080%
multiple_dom_manipulations3+ fields showing DOM manipulation+20
abnormal_key_ratioKeydown/keyup ratio outside normal range+1560%
{
"id": "det_xyz789",
"source": "bot_scanner",
"unified_score": 85,
"threat_level": "HIGH",
"flags": [
"ghost_clicks",
"form_dom_manipulation",
"multiple_dom_manipulations"
],
"metadata": {
"behavior": {
"clickAnalysis": {
"ghostClicks": true,
"ghostClickRatio": 0.67,
"instantClicks": false,
"noPreMovement": true
},
"formAnalysis": {
"suspiciousFields": [
{
"id": "email",
"reason": "content_without_keyboard",
"contentLength": 24,
"confidence": 0.9
},
{
"id": "message",
"reason": "content_without_keyboard",
"contentLength": 156,
"confidence": 0.9
}
],
"totalDomManipulations": 2,
"fields": {
"email": {
"contentLength": 24,
"keyCount": 0,
"noKeyboardEvents": true
},
"message": {
"contentLength": 156,
"keyCount": 0,
"noKeyboardEvents": true
}
}
}
}
}
}

Not all DOM manipulation is malicious. WebDecoy accounts for:

ScenarioHow We Handle It
Password managersUsually trigger paste events (tracked separately)
AutofillBrowser autofill fires input events with isTrusted: true
Copy/pastePaste events are tracked and not flagged
Form pre-populationOnly analyzed after user interaction begins
Alert Rule: Ghost Click Detection
Trigger:
- flags contains 'ghost_clicks'
Action: Block immediately
Rationale: Strongest indicator of browser extension or automation
Alert Rule: Vision AI on Signup
Trigger:
- path matches '/signup' OR '/register'
- formAnalysis.suspiciousFields.length > 0
Action: Require additional verification
Rationale: Prevent AI-automated account creation
Alert Rule: AI Form Probing
Trigger:
- formAnalysis.totalDomManipulations >= 2
- session duration < 10 seconds
Action: Block and log
Rationale: AI bot rapidly filling forms to test responses
Dashboard Query: Vision AI Activity
Filter:
- flags contains 'ghost_clicks' OR 'form_dom_manipulation'
Group by: path
Metric: Count per page

In the Detections table, use these filters:

FilterValueWhat It Shows
Flags containghost_clicksAll ghost click detections
Flags containform_dom_manipulationAll DOM manipulation detections
Unified Score ≥70High-confidence Vision AI activity
Sourcebot_scannerAll client-side detections

API Example:

Terminal window
# Get all Vision AI detections
curl -H "Authorization: Bearer $TOKEN" \
"https://api.webdecoy.com/v1/detections?flags_contain=ghost_clicks"
# Get all form manipulation detections
curl -H "Authorization: Bearer $TOKEN" \
"https://api.webdecoy.com/v1/detections?flags_contain=form_dom_manipulation"

These signals indicate potential AI-assisted or automated browsing but aren’t specific to a single extension:

SignalFlagScore ImpactMeaning
Wrapped Fetch APIwrapped_fetch+5 pointswindow.fetch has been modified
Wrapped XHRwrapped_xhr+5 pointsXMLHttpRequest.open has been modified
Modified MutationObservermodified_mutation_observer+5 pointsObserver constructor has been patched

API wrapping can indicate:

  • AI extensions intercepting network requests
  • Content extraction tools
  • Automated form submission tools
  • Browser automation frameworks
// Check if fetch has been wrapped
var fetchStr = window.fetch.toString();
if (fetchStr.indexOf('[native code]') === -1) {
// Fetch has been wrapped by an extension
flags.push('wrapped_fetch');
}
// Check if XHR has been wrapped
var xhrStr = XMLHttpRequest.prototype.open.toString();
if (xhrStr.indexOf('[native code]') === -1) {
// XHR has been wrapped
flags.push('wrapped_xhr');
}
SignalFlagMeaning
AI Context Menuai_context_menuExtension added AI options to right-click menu

When AI activity is detected, flags are added to the detection record:

┌─────────────────────────────────────────────────────────────────┐
│ DETECTION FLAGS BREAKDOWN │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Primary AI Extensions (15 pts each) │
│ ──────────────────────────────────── │
│ claude_extension, chatgpt_extension, copilot_extension, │
│ gemini_extension, perplexity_extension │
│ │
│ Secondary AI Extensions (10 pts each) │
│ ───────────────────────────────────── │
│ monica_extension, jasper_extension, writesonic_extension, │
│ merlin_extension, sider_extension, maxai_extension │
│ │
│ Suspicious Signals (5 pts each) │
│ ─────────────────────────────── │
│ wrapped_fetch, wrapped_xhr, modified_mutation_observer │
│ │
│ Other Signals (8 pts each) │
│ ───────────────────────── │
│ generic_ai_extension, ai_context_menu │
│ │
└─────────────────────────────────────────────────────────────────┘
{
"id": "det_abc123",
"source": "bot_scanner",
"ip_address": "192.168.1.100",
"unified_score": 45,
"threat_level": "MEDIUM",
"ai_scraper_score": 0,
"ai_scraper_category": "none",
"flags": [
"claude_extension",
"wrapped_fetch"
],
"metadata": {
"aiBrowserPlugins": {
"detected": true,
"plugins": ["claude_extension"],
"count": 1
}
}
}

In the Detections table, filter specifically for AI-related activity:

FilterHow to UseEffect
AI Scraper ScoreSet minimum scoreShow only AI crawler activity
Flags containSearch for flag nameShow detections with specific AI flags
Source = bot_scannerSelect source filterShow client-side detections

Find all Claude extension users:

Flags contain: claude_extension

Find all AI training crawlers:

AI Scraper Score >= 70
AI Scraper Category = training_crawler

Find all AI browser plugin activity:

Flags contain: _extension
Source = bot_scanner

Find suspicious API wrapping:

Flags contain: wrapped_

AI browser plugin detection contributes to the overall bot score:

DetectionPoints AddedRationale
Single primary AI extension+15Strong indicator of AI-assisted browsing
Multiple primary AI extensions+15 eachCompounding evidence
Secondary AI extension+10Common AI productivity tools
API wrapping+5Could be legitimate extensions too
Generic AI signals+8Unspecified AI activity
ScenarioFlagsAdded Score
Claude extension onlyclaude_extension+15
ChatGPT + wrapped fetchchatgpt_extension, wrapped_fetch+20
Multiple AI toolsclaude_extension, monica_extension, copilot_extension+40
Wrapped APIs onlywrapped_fetch, wrapped_xhr+10

Detect when AI tools might be used to extract or summarize your content:

Alert Rule: AI Content Extraction
Trigger:
- flags contains 'claude_extension' OR 'chatgpt_extension'
- path matches '/premium/*'
Action: Log and alert
Rationale: User may be using AI to summarize premium content

Identify AI-assisted form filling:

Alert Rule: AI Form Assistance
Trigger:
- source = 'bot_scanner'
- flags contains any '_extension'
- path matches '/signup' OR '/checkout'
Action: Add CAPTCHA challenge
Rationale: AI tools may be automating form submissions

Track AI adoption among your visitors:

Dashboard Query: AI Tool Adoption
Group by: flags
Filter: flags contains '_extension'
Metric: Unique visitors per AI tool

Access AI detection data via the WebDecoy API:

{
"flags": ["claude_extension", "wrapped_fetch"],
"metadata": {
"aiBrowserPlugins": {
"detected": true,
"plugins": ["claude_extension"],
"count": 1
}
},
"ai_scraper_score": 0,
"ai_scraper_category": "none",
"ai_scraper_name": null
}
Terminal window
# Get all detections with AI browser plugins
curl -H "Authorization: Bearer $TOKEN" \
"https://api.webdecoy.com/v1/detections?flags_contain=_extension"
# Get Claude extension detections
curl -H "Authorization: Bearer $TOKEN" \
"https://api.webdecoy.com/v1/detections?flags_contain=claude_extension"
# Get all AI scraper activity
curl -H "Authorization: Bearer $TOKEN" \
"https://api.webdecoy.com/v1/detections?ai_scraper_score_gte=50"

AI browser plugin detection is designed to be:

  • Non-invasive: Only checks for presence, doesn’t read content
  • Privacy-respecting: Doesn’t capture what users type into AI tools
  • Transparent: Detection signals are clearly documented

WebDecoy continues to expand AI detection as the landscape evolves:

  • New AI Extensions: Detection for emerging AI browser tools
  • AI Agent Detection: Identifying AI agents browsing on behalf of users
  • LLM API Detection: Detecting pages being fed to LLM APIs
  • Content Summarization Detection: Identifying AI summary extraction patterns

If you discover new AI extension patterns, please report them to help improve detection coverage.