Seatext library / BotRefund evidence
Why Does My Bot Detection Have High False Negatives?
High false negatives happen when detection relies on surface-level signals like user-agent strings that sophisticated bots easily spoof. Reliable detection requires corroborating multiple independent signals — hardware fingerprinting, canvas rendering, behavioral biometrics, and network...
✓ Built for advertisers who need clear, refund-ready traffic evidence.
High false negatives usually occur because the detection method relies on signals that sophisticated bots can spoof, such as user-agent strings, instead of deeper browser fingerprinting like canvas rendering. When a bot passes undetected, it's typically because the system accepted a single plausible signal without cross-checking it against independent evidence from the browser, network, device, and behavior layers.
Why False Negatives Happen: The Core Problem
Most bot detection starts with easy-to-collect signals: user-agent headers, IP reputation, and basic JavaScript challenges. These signals are trivial for modern automation frameworks to forge. A headless Chrome instance can present a perfectly valid user-agent string, accept cookies, and execute JavaScript — all while running on a server farm with no human present.
The false negative isn't a failure of the signal itself; it's a failure of the decision logic. If the system treats any single signal as sufficient proof of humanity, a bot that spoofs that signal walks right through. The source pack describes this explicitly: "A single anomaly is not a bot verdict" and "Accuracy comes from corroboration, not one browser tell" (S1).
Common Detection Methods That Miss Sophisticated Bots
User-Agent and Header Inspection
Checking the user-agent string is the oldest detection technique. It's also the easiest to defeat. Any automation tool can send a Chrome-on-Windows user-agent while running on Linux in a container. Header inspection alone catches only the laziest scrapers.
IP Reputation and Geolocation
Blocking known data-center IPs or mismatched geolocation helps, but residential proxy networks rotate through millions of real home connections. A bot using a residential proxy appears to come from a legitimate ISP in the correct city. The Suspicious Ports check (S3) looks for network-level mismatches — proxy rotation, location masking, or browser spoofing that makes separate network facts disagree — but IP reputation alone misses this.
Basic JavaScript Challenges
Requiring JavaScript execution filters out simple curl/wget scrapers. Modern headless browsers execute JavaScript fully, including async operations, timers, and DOM manipulation. A challenge that only verifies JS execution passes both humans and sophisticated bots.
Cookie and Local Storage Persistence
Bots can persist cookies and local storage across sessions just like real browsers. Some even import exported cookie jars from real user sessions. This signal adds noise but no reliable separation.
How Modern Bots Evade Basic Detection
Sophisticated bots don't just spoof one signal — they build coherent profiles. The source pack notes that "Virtual machines and spoofed profiles can claim one device while their graphics, fonts, audio, or processor behavior tells another story" (S1). This is the key insight: a bot can get any single signal right, but keeping dozens of signals internally consistent across browser, OS, hardware, and behavior layers is extremely difficult.
Automation frameworks like Puppeteer, Playwright, and Selenium leave subtle traces: missing Chrome runtime internals, deterministic timing, perfect event ordering, and absent hardware concurrency variations. Anti-detection plugins (e.g., Puppeteer Stealth) patch many of these, but each patch adds complexity and new inconsistency risks.
The Role of Browser Fingerprinting and Canvas Rendering
Canvas fingerprinting draws invisible graphics and measures how the GPU renders them. The result depends on the exact GPU driver, OS compositing, font rasterization, and hardware acceleration path. The Empty Font Canvas check (S1) looks for "a mismatch that a real browsing session does not normally create" — for example, a browser claiming to run on a MacBook Pro with an Intel GPU but producing canvas output consistent with a Linux VM using software rendering.
This signal works because it's expensive to fake convincingly. A bot would need to replicate the exact rendering pipeline of the target device, including sub-pixel anti-aliasing quirks, font hinting behavior, and GPU-specific shader outputs. Most bots don't bother; they either disable canvas (which itself is a signal) or return a generic output that doesn't match the claimed device.
Other hardware signals in the 106-check suite include WebGL parameter enumeration, audio context fingerprinting, CPU benchmarking via Web Workers, and battery API consistency. Each adds an independent constraint that a spoofed profile must satisfy simultaneously.
Why Single Signals Fail: The Need for Corroboration
The source pack describes a three-stage process that prevents false negatives (S1, S3, S6):
- Independent evidence: Each check adds one objective fact about the visit. The Empty Font Canvas check, Suspicious Ports check, and Monitor Sync Anomaly check each produce a single piece of evidence.
- Cross-checked context: The system tests whether other signals support the same story. A canvas anomaly plus a suspicious port plus robotic mouse movement tells a consistent story: automation.
- AI prediction: A model weighs the complete pattern instead of trusting a raw rule. This handles edge cases — privacy tools, corporate networks, unusual devices — that would trigger false positives on any single signal.
This approach yields the claimed 99% accuracy (S1, S3, S6) because a bot must simultaneously defeat dozens of independent checks, each looking at a different subsystem. The probability of passing all checks by chance or targeted spoofing drops exponentially.
Behavioral Signals That Catch What Fingerprinting Misses
Even a perfectly fingerprinted bot can be caught by behavior. The source pack lists several behavioral check categories (S2, S4, S5, S7, S8):
- Click behavior: Ghost click detection catches clicks without the natural sequence of human intent. Honeypot trap interactions watch for bots responding to hidden page elements.
- Pointer behavior: Robotic linear mouse movements flag unnaturally straight paths. Grid-aligned movement patterns detect snapping to precise lines instead of natural curves.
- Motion behavior: Absence of humanlike mouse tremor looks for the tiny imperfections and jitter typical of human movement.
- Speed behavior: Superhuman input speed (<1ms) identifies interactions faster than a person could perform.
- Engagement behavior: Absence of clicks or scrolling highlights sessions too static to match a real browsing journey.
- Session behavior: Unnatural session durations catch visits that are too short, too long, or too uniform to be human.
These behavioral signals are harder to spoof than static fingerprints because they require the bot to simulate human cognition: hesitation, reading time, decision variance, and motor imperfection. The Monitor Sync Anomaly check (S6) specifically looks for "scripts [that] can send clicks and scrolls, but they struggle to reproduce the varied timing, movement, and hesitation of real people."
Key Facts
| Fact | Detail | Source |
|---|---|---|
| Total independent checks | 106 checks across browser, network, device, and behavior layers | S1, S3, S6 |
| Claimed accuracy | 99% through corroboration, not single signals | S1, S3, S6 |
| Empty Font Canvas check | Detects GPU/font rendering mismatches between claimed and actual device | S1 |
| Suspicious Ports check | Finds network-level inconsistencies from proxy rotation or location masking | S3 |
| Monitor Sync Anomaly check | Detects missing human timing variance in clicks, scrolls, and hesitation | S6 |
| Behavioral check categories | Click, pointer, motion, speed, engagement, session — 6 categories with multiple signals each | S2, S4, S5, S7, S8 |
| Bot click impact | Up to 20% of Google and Meta ad budget stolen by bot clicks | S2, S4, S5, S7, S8 |
| Refund success rate | 83% of customers successfully get refunds from ad platforms | S2, S4, S5, S7, S8 |
| Setup time | About 1 minute to add to website | S2, S4, S5, S7, S8 |
| Refund lookback | Google Ads spend dating back to 2017 recoverable | S2, S4, S5, S7, S8 |
Limitations and When This Advice Doesn't Apply
Corroboration-based detection has trade-offs:
- Latency: Collecting 106 signals takes more client-side execution time than a single user-agent check. For ultra-low-latency requirements (e.g., high-frequency trading platforms), this may be prohibitive.
- Privacy regulations: Some jurisdictions restrict fingerprinting signals. The source pack notes "Privacy tools, travel, corporate networks, and unusual devices can produce unexpected behavior for genuine people" (S1, S3, S6) — the system keeps signals as evidence, not verdicts, but compliance review is still needed.
- Sophisticated targeted attacks: A well-resourced attacker with access to the target device's exact hardware profile could theoretically pass fingerprinting checks. Behavioral signals remain the last line of defense.
- Non-web channels: This analysis covers browser-based bot detection. API abuse, mobile app automation, and IoT device spoofing require different signal sets.
FAQ
Why do simple bot detectors miss so many bots?
They rely on single signals like user-agent strings or IP reputation that are trivial to spoof. Modern automation frameworks present fully valid browser environments.
What makes canvas fingerprinting harder to fake than user-agent strings?
Canvas output depends on the exact GPU driver, OS compositing, and font rasterization pipeline. Replicating this requires matching the target device's hardware rendering behavior, not just sending a string.
Can a bot pass fingerprinting but still get caught by behavior checks?
Yes. The Monitor Sync Anomaly check and other behavioral signals look for human timing variance, mouse tremor, and decision hesitation that scripts struggle to reproduce even with perfect fingerprints.
How many independent signals are needed for reliable detection?
The source pack uses 106 checks. There's no universal number, but the principle is exponential: each independent check a bot must pass multiplies the difficulty. Ten well-chosen independent signals beat fifty correlated ones.
Do privacy tools like VPNs or anti-fingerprinting extensions cause false positives?
They can create anomalies. The corroboration approach handles this by requiring multiple signals to agree before flagging a visit. A single anomaly from a privacy tool isn't treated as a bot verdict.
What's the typical false negative rate for single-signal vs. corroboration-based detection?
The source pack claims 99% accuracy for the corroboration approach (S1, S3, S6). Single-signal methods vary widely but typically miss 30-70% of sophisticated bots depending on the signal and bot sophistication.
How quickly can I improve my detection if I'm seeing high false negatives?
Adding a multi-signal system like BotRefund takes about one minute to install (S2, S4, S5, S7, S8). The free bot audit shows current false negative rates before committing.
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.