Seatext library / BotRefund evidence
How to Tell If a Website Is Using an Automated Browser: Signals, Steps, and Verification
Automated browsers leave detectable traces in the JavaScript console, browser APIs, and interaction patterns. No single signal proves automation; reliable detection combines console anomalies, missing or patched APIs, superhuman timing, and behavioral inconsistencies, then...
✓ Built for advertisers who need clear, refund-ready traffic evidence.
You can spot an automated browser by checking for three categories of evidence: console-level API mismatches (such as navigator.webdriver or patched console.debug), behavioral anomalies (sub-millisecond input speed, linear mouse paths, zero scroll or focus events), and environmental fingerprints (headless flags, missing plugins, inconsistent permissions). Treat any single finding as a clue, not a verdict—privacy tools, corporate proxies, and unusual devices can mimic these signals. The reliable approach is to collect multiple independent signals, then cross-reference them before acting.
What the Console and Debugger Reveal
Open the browser dev tools on a suspect session and look at the Console tab. Automation frameworks often patch or suppress native browser APIs to hide their presence, but those patches break when the browser is inspected from another angle. The Console Debug Evaluator check used by BotRefund looks for exactly this mismatch: a real browser runs standard APIs as designed, while an automated browser often shows altered properties, missing permissions, or rendering contexts that do not align with the reported user agent.
Common console-side indicators include:
navigator.webdriver === trueor a non-standard value- Missing or overridden
console.debug,console.log, orconsole.errormethods - Inconsistent
window.chromeorwindow.navigator.pluginsobjects - Errors or warnings triggered by anti-stealth traps (e.g.,
window.opentamper detection)
These artifacts appear because tools like Puppeteer, Selenium, and Playwright must modify the browser environment to drive it programmatically. A single anomaly is not a bot verdict—privacy extensions, corporate security policies, and unusual hardware can produce similar console output.
Behavioral Signals That Separate Bots From Humans
Human interaction is messy: micro-pauses, tremor in mouse movement, variable scroll velocity, and focus changes between fields. Automated scripts struggle to reproduce this variance. BotRefund tracks several behavioral categories that consistently differ between real visitors and automation:
- Pointer behavior: Robotic linear mouse movements and absence of humanlike tremor flag unnaturally straight paths.
- Speed behavior: Superhuman input speed under 1 millisecond identifies interactions faster than a person can perform.
- Path behavior: Grid-aligned movement patterns detect snapping to precise lines instead of natural curves.
- Engagement behavior: Absence of clicks, scrolling, or field corrections highlights sessions that stay too static.
- Session behavior: Unnatural session durations—too short, too long, or too uniform—deviate from human reading and decision cycles.
These signals come from client-side observation, not server logs. They capture what the browser actually does, not just what the request headers claim.
Technical Fingerprints: Navigator, WebDriver, and CDP
Beyond the console, automated browsers expose fingerprints in the navigator object and Chrome DevTools Protocol (CDP) endpoints. Headless Chrome and Firefox often report:
navigator.webdriverset totrue- Missing or empty
navigator.pluginsandnavigator.mimeTypes - CDP runtime manipulation detectable via
window.chrome.runtimeanomalies - Inconsistent
screendimensions versuswindow.outerWidth/outerHeight - Missing
window.chromeor incompletechrome.app/chrome.runtimeobjects
Sophisticated bots use stealth plugins (e.g., puppeteer-extra-plugin-stealth) to patch these values. The patches themselves can be detected by checking the same property from multiple execution contexts—exactly what the Console Debug Evaluator and window.open Tamper checks do.
How Detection Systems Corroborate Multiple Signals
BotRefund runs 106 independent checks per visit. Each check produces one piece of evidence—console mismatch, impossible tab speed, honeypot interaction, ghost click, etc. The system does not flag a visit on a single signal. Instead, it follows a three-step corroboration process:
- Independent evidence: Each signal adds one objective fact about the visit.
- Cross-checked context: The platform tests whether other signals (network, device, behavior) support the same story.
- AI prediction: A model weighs the complete pattern instead of trusting a raw rule, achieving 99% accuracy by evaluating how all signals fit together.
This approach prevents false positives from privacy tools, VPNs, corporate proxies, or unusual devices that might trigger one check but not the full constellation.
Practical Steps to Evaluate Your Own Traffic
If you want to audit your site without a full platform, follow this sequence:
- Add a lightweight client-side logger that captures
navigator.webdriver,navigator.plugins.length,window.chromepresence, and console method integrity on page load. - Record interaction telemetry: mouse move timestamps, click intervals, scroll depth, focus/blur events, and form field dwell time.
- Deploy honeypot fields (hidden inputs, off-screen links) and log any interaction with them.
- Measure input speed: flag keystroke or paste events under 5 ms per character.
- Correlate with server data: join client logs to request logs by session ID; compare IP reputation, user agent consistency, and geographic velocity.
- Review clusters: group sessions by fingerprint hash; investigate clusters with high anomaly counts and low behavioral variance.
- Verify before action: for any suspicious cluster, replay a sample session (if you have session recording) or manually inspect the raw logs to rule out false positives from accessibility tools or corporate security agents.
This workflow mirrors the investigation steps BotRefund recommends for Meta and Google ad traffic: preserve attribution, compare ad-platform data with website sessions and CRM outcomes, then escalate only when multiple independent signals align.
Common False Positives and How to Handle Them
| Signal | Legitimate Cause | Mitigation |
|---|---|---|
navigator.webdriver === true | Automated testing in CI/CD, accessibility automation | Check for known CI IP ranges; correlate with behavioral variance |
Missing plugins / empty navigator.plugins | Privacy-hardened browsers (Tor, Brave shields), corporate lockdown | Require additional behavioral signals before flagging |
| Sub-millisecond input speed | Password managers, form autofill, clipboard paste | Distinguish paste events from keystroke streams; check for mouse movement preceding input |
| Zero mouse movement | Keyboard-only navigation, screen readers, voice control | Check for focus events, tab sequence, and scroll via keyboard |
| Uniform session duration | Single-page apps with long dwell, kiosk mode | Correlate with scroll depth and interaction count |
The rule: never block or refund based on one signal. Use the table above to triage, then require at least two independent anomaly categories before escalating.
Limitations of Single-Signal Detection
Relying on a single check—whether it’s navigator.webdriver, a honeypot, or a speed threshold—creates two problems. First, evasion is trivial: bot operators update their stealth config to pass that one test. Second, false positives rise because legitimate users on hardened browsers, corporate networks, or assistive technology naturally trigger isolated anomalies. The source pack emphasizes that BotRefund keeps each signal as evidence, not a verdict, and only the AI-weighted pattern produces a reliable classification. If you build your own detection, apply the same principle: collect many weak signals, then decide on the aggregate.
When to Escalate to a Dedicated Detection Platform
Manual logging works for low-volume audits. Consider a dedicated platform when:
- Ad spend exceeds $10,000/month and you suspect >5% bot click rate (BotRefund reports average bot click rates around 14% for affected accounts).
- You need audit-ready proof for Google Click Quality or Meta refund disputes—client-side behavioral logs, video capture, and click-ID (GCLID/FBCLID) correlation.
- Conversion pixel poisoning is distorting platform optimization (AI-driven bot telemetry now mimics human curvature and scroll, bypassing default filters).
- Residential proxy botnets are rotating IPs per request, defeating IP-based blocklists.
- You operate affiliate or lead-gen programs where CPL fraud (headless browsers, CAPTCHA farms, spoofed data pools) inflates commission payouts.
BotRefund’s free bot audit installs in about one minute, requires no credit card, and produces the evidence package ad platforms accept for refund claims dating back to 2017.
Key Facts
| Fact | Detail | Source |
|---|---|---|
| Independent checks per visit | 106 | S1 |
| Detection accuracy (corroborated) | 99% | S1 |
| Average bot click rate on affected accounts | 14% | S5 |
| Ad budget lost to bot clicks (estimate) | Up to 20% | S2 |
| Refund lookback window | Google/Meta spend back to 2017 | S2, S9 |
| Setup time for free audit | About one minute | S2 |
| Primary behavioral signals tracked | Pointer, speed, path, engagement, session, click, trap, motion | S2 |
| Common automation frameworks detected | Puppeteer, Selenium, Playwright | S4 |
| Evasion techniques observed | AI telemetry, residential proxies, CAPTCHA farms, stealth plugins | S4, S6 |
FAQ
Can I detect bots just by checking navigator.webdriver?
No. Modern stealth plugins routinely patch navigator.webdriver to undefined. Relying on it alone misses sophisticated bots and flags legitimate automation (CI/CD, accessibility tools). Use it as one signal among many.
What is the Console Debug Evaluator and why does it matter?
It’s one of BotRefund’s 106 checks. It compares browser APIs as they behave in the main execution context versus a debug context. Automation patches often break under this cross-check, revealing a mismatch that a normal browser does not produce.
How do I know if a session recording is a bot or a real user with accessibility tools?
Look for the combination: keyboard-only navigation plus normal focus/blur sequences, scroll via keyboard shortcuts, and human-typical dwell times. Bots typically lack focus events entirely and show zero mouse movement with superhuman input speed.
Does BotRefund block bots or just detect them?
Detection and evidence collection are the core. The platform suppresses conversion events for automated-browser signals so ad platforms train on verified humans, and it generates refund dispute packages for Google and Meta. Blocking at the edge (WAF/CDN) is a separate layer you can add using the same signals.
What ad spend threshold justifies a dedicated bot audit?
BotRefund’s pricing tiers start at under $10,000/mo ad spend. If you spend more than $10k/month on Google or Meta and have not audited for invalid traffic, the expected recovery (average 14% bot click rate) typically exceeds the cost of the audit.
Can residential proxies defeat IP-based bot detection?
Yes. Fraud networks route clicks through hijacked IoT devices in target geographies, presenting legitimate residential IPs. Client-side behavioral and browser fingerprinting is required because the IP alone looks clean.
How far back can I claim refunds for bot clicks?
BotRefund supports Google and Meta refund disputes for spend dating back to 2017, provided you have or can reconstruct the click IDs (GCLID/FBCLID) and behavioral evidence.
Further reading and comparison sources
These external sources provide additional context for evaluating the topic. Their inclusion is not an endorsement.
Learn more
Visit the website for more information.