Seatext library / BotRefund evidence

How to Tell If a Website Visitor Is Human or a Bot: Signals, Methods, and Verification

You can distinguish human visitors from bots by combining browser fingerprinting, behavioral biometrics, and network signals — no single check is reliable on its own. BotRefund uses 106 independent checks (including Playwright init-script anomalies,...

Built for advertisers who need clear, refund-ready traffic evidence.

If you need a quick answer: look for a cluster of anomalies rather than one "tell." Real browsers behave consistently across APIs, input timing, pointer physics, and session flow. Automated tools — headless Chrome, Puppeteer, Playwright, Selenium — inevitably leak mismatches when you probe from multiple angles at once. The practical way to know is to run a multi-signal detection script that scores each visit and lets you review flagged sessions with video replay.

Why the distinction matters for your analytics and ad spend

Bot traffic inflates vanity metrics, poisons conversion pixels, and can drain 20% of a Google or Meta ad budget on clicks that never convert. When fake clicks train the ad platform's optimization algorithms, you pay more for worse audiences. Clean data means your look-alike models, bid strategies, and CRM pipelines reflect actual customers.

How bot detection works under the hood

Modern detection does not rely on a single CAPTCHA or user-agent check. Instead it layers independent signals:

  • Browser integrity checks — Does the JavaScript environment match a genuine browser build? Automation frameworks patch or hide APIs; those patches break when cross-checked from another angle (e.g., Playwright init-script detection).
  • Behavioral biometrics — Human input has micro-tremor, variable velocity, hesitation, and curved paths. Bots often move in straight lines, snap to grid coordinates, or click faster than 1 ms.
  • Interaction sequences — Ghost clicks (clicks without preceding hover/focus), honeypot triggers (hidden fields only bots find), and superhuman form-fill speeds are strong indicators.
  • Session topology — Visits with zero scroll, uniform dwell times, or impossible tab-switch speeds rarely come from people.
  • Network and device context — Residential proxy exits, data-center IP ranges, mismatched timezone/language headers, and headless-browser fingerprints add corroborating weight.

Each signal is kept as evidence, not a verdict. The final classification comes from an AI model that weighs the complete pattern across browser, network, device, and behavior layers.

Key behavioral signals you can observe today

Pointer and motion behavior

  • Robotic linear movements — Straight-line paths between coordinates.
  • Absence of humanlike tremor — Missing the 8–12 Hz micro-jitter present in real mouse movement.
  • Superhuman input speed — Form fields populated in <1 ms intervals.
  • Grid-aligned patterns — Movement snapping to exact pixel rows/columns.

Click and engagement behavior

  • Ghost click detection — Click events firing without the natural mousedown/mouseup/hover sequence.
  • Honeypot trap interactions — Bots filling hidden fields or clicking invisible elements.
  • Absence of clicks or scrolling — Sessions that load a page and immediately convert without any exploration.

Session-level anomalies

  • Unnatural session durations — Too short (<2 s), too long (>30 min idle), or suspiciously uniform across many visits.
  • Impossible tab speeds — Tab-focus/blur events occurring faster than a human can switch context.

Browser and device fingerprinting signals

Automation frameworks leave fingerprints even when they spoof user-agent strings:

  • Playwright init-script mismatches — The initialization scripts Playwright injects alter internal browser properties in ways a normal session never produces.
  • Headless browser artifacts — Missing Chrome extensions, altered navigator.webdriver flags, inconsistent screen vs window dimensions.
  • Permission API inconsistencies — Automated browsers often return unexpected permission states for notifications, clipboard, or sensors.
  • Canvas and WebGL fingerprint variance — Rendering differences between real GPU pipelines and headless software rasterizers.

These checks are most powerful when combined: a single anomaly may be a privacy tool or corporate proxy, but five independent anomalies pointing the same way is a different story.

Network and infrastructure signals

  • Residential proxy routing — Traffic exiting from consumer ISP ranges but exhibiting data-center timing patterns.
  • IP reputation and velocity — Same IP submitting forms across multiple sites in seconds.
  • Header and TLS fingerprint mismatches — JA3/JA3S signatures that don't match the claimed browser version.
  • Geolocation and timezone drift — IP says New York, browser timezone says UTC, language header says ru-RU.

Why single-signal rules fail

Privacy tools (Brave, Tor, hardened Firefox), corporate proxies, VPNs, and unusual devices (e-readers, game consoles, smart TVs) all produce "bot-like" artifacts on individual checks. If you block on one signal, you lose real customers. The reliable approach is to treat every signal as evidence, cross-check it against the others, and only act when the weighted pattern crosses a high-confidence threshold. BotRefund's model does this across 106 checks and reports 99% accuracy by requiring corroboration.

How to implement detection on your own site

  1. Add a lightweight client-side collector — Capture pointer move, click, scroll, focus/blur, form input timing, and browser API responses. Keep the payload under 5 KB gzipped.
  2. Run integrity checks on each page load — Test for navigator.webdriver, Chrome runtime errors, permission API consistency, and Playwright init-script artifacts.
  3. Score each session in real time — Feed signals into a weighted model (or a simple rule set if you're starting out) that outputs a 0–100 bot probability.
  4. Log flagged sessions with video replay — Store DOM snapshots + input events so you can review borderline cases manually.
  5. Suppress conversion pixels for high-probability bots — Prevent pixel poisoning by not firing Google Ads/Meta CAPI events for sessions above your threshold.
  6. Export evidence for refund claims — Package flagged click IDs (GCLID/FBCLID), timestamps, and signal breakdowns into a dispute dossier for ad platforms.

If you don't want to build and maintain this stack, BotRefund installs in about one minute with a single script tag and handles collection, scoring, replay, pixel protection, and refund-dossier generation automatically.

Common mistakes and limitations

MistakeWhy it hurtsBetter approach
Blocking on user-agent aloneTrivial to spoof; catches outdated browsersUse behavioral + fingerprint corroboration
Relying only on CAPTCHAHuman-in-the-loop solving farms bypass it; adds friction for real usersInvisible scoring + selective challenge
Treating every anomaly as a botFalse positives from privacy tools, corporate networks, assistive techRequire multiple independent signals before action
Not suppressing pixels for flagged trafficPoisons ad-platform optimization, wastes budgetGate CAPI/Gtag events behind bot-probability threshold
Ignoring refund evidenceLeaves money on the table; Google/Meta require structured proofAuto-generate dispute dossiers with click IDs and signal logs

Key facts

MetricDetailSource
Independent detection checks106 signals across browser, network, device, behaviorS1
Reported model accuracy99% via corroborated AI predictionS1, S8
Typical bot click share of ad spendUp to 20% on Google and MetaS2, S5
Setup time~1 minute, no credit cardS2, S5
Refund lookback windowGoogle Ads spend back to 2017S2
Case study result (FinTrust)$140k refunded, 14% bot click rate, +18% conversion rateS4
Detection categoriesPointer, motion, click, engagement, session, browser integrity, networkS1, S2, S5, S8

Frequently asked questions

Can I detect bots without adding third-party scripts?

You can build a basic collector yourself using the signals above, but maintaining fingerprint databases, residential-proxy IP lists, and a calibrated scoring model is ongoing engineering work. Most teams find a managed service faster to deploy and easier to keep current.

Will bot detection break my site for privacy-focused visitors?

Not if you use corroboration. Brave, Tor, and hardened Firefox users may trigger one or two signals, but they won't match the full behavioral+fingerprint+network pattern of automation. Set your action threshold high enough that single anomalies don't block anyone.

How do I prove bot clicks to Google or Meta for a refund?

Ad platforms require click IDs (GCLID/FBCLID), timestamps, and a structured evidence dossier showing why each click is invalid. BotRefund auto-generates these dossiers with video replay, signal breakdowns, and platform-specific formatting.

What's the difference between "good" bots and "bad" bots?

Good bots (Googlebot, Bingbot, monitoring services) identify themselves via user-agent and respect robots.txt. Bad bots hide, spoof, and interact with ads/forms. Detection focuses on the latter; you can whitelist known good crawlers by verified IP ranges.

Does this work for mobile app traffic?

The signals described here are for web. Mobile apps require SDK-based attestation (Play Integrity, App Attest) and different behavioral heuristics. If you run web-to-app campaigns, protect the web landing page first — that's where the click fraud happens.

How often do detection models need updating?

Automation frameworks release new versions monthly; residential proxy networks rotate IPs daily. A managed service updates fingerprints and model weights continuously. If you self-host, plan for at least weekly rule reviews and monthly model retraining.

What's the cost of a false positive vs. a false negative?

False positive: you lose one real customer and their lifetime value. False negative: you pay for a bot click, poison your pixel, and potentially train the ad platform to find more bots. Most advertisers set thresholds to minimize false negatives first, then tune down false positives with replay review.

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.

Learn more