Seatext library / BotRefund evidence
What Signals to Cross-Check for Accurate Bot Detection
Accurate bot detection requires combining independent signals across device, browser, network, behavior, and context. A single signal—like an odd CPU report or a fast click—is never enough because privacy tools, corporate networks, and unusual...
✓ Built for advertisers who need clear, refund-ready traffic evidence.
To detect bots accurately, cross-check several independent signal families: IP reputation, browser and device fingerprint, behavioral patterns, request frequency, and CAPTCHA responses. None of these alone is reliable—privacy tools, travel, corporate networks, and unusual devices can produce false positives. The key is to combine signals that are independent of each other and let a model or scoring system weigh the whole pattern.
Sophisticated bots now use residential proxies, AI-generated movement, and anti-detect browsers to mimic humans. Simple rules like “IP looks bad” or “fingerprint is odd” no longer work. You need a set of signals that corroborate each other across different layers of the visit.
Why a Single Signal Is Never Enough
A single anomaly is not a bot verdict. A real user with a VPN might appear suspicious on IP reputation. A corporate network can make browser fingerprints look inconsistent. A person with a mouse that lacks natural tremor might trigger a behavioral flag. If you block on one signal, you hurt real visitors and still miss bots that evade that specific check.
Bots are built to bypass individual checks. They spoof user agents, rotate IPs, and simulate human-like moves. But they rarely get every signal right simultaneously. That is why cross-checking works: you need several independent pieces of evidence pointing the same way.
The Five Signal Families You Should Combine
1. Device and Hardware Fingerprints
These include CPU concurrency, GPU details, fonts, audio, and screen properties. A real browser reports hardware that fits together naturally. A bot or virtual machine often reveals a mismatch—for example, claiming one device while graphics and processor behavior tell another story. This is the “CPU Concurrency Lie” check BotRefund uses. It looks for inconsistencies that a genuine session rarely creates.
2. Browser and Network Data
This covers IP reputation, proxy detection, user agent, TLS fingerprint, and network timing. Residential proxies are now common, so IP alone is weak. But a browser that claims a real device while connecting from a known botnet IP is a stronger signal. Combine network data with device data to catch spoofed profiles.
3. Behavioral Interaction
Mouse movement, clicks, scrolls, and timing are rich signals. Bots often produce unnaturally straight pointer paths, superhuman input speed (under 1ms), grid-aligned movement, or ghost clicks that lack human intent. They may show no tremor or jitter. Real users pause, hesitate, and correct themselves. Watch for absence of these natural imperfections.
4. Request and Session Patterns
Request frequency, session duration, and engagement depth are useful. Bots may submit forms faster than a person could, arrive in bursts, or stay on a page for an unrealistic time. Look for uniformity: many sessions with identical durations, no scrolling, zero clicks, then a conversion. These patterns are hard to fake consistently.
5. Human Verification Responses
CAPTCHA responses are a signal, but not a perfect one. Human-in-the-loop CAPTCHA solving services can route forms through cheap solving centers. Still, a bot that fails a well-designed CAPTCHA or solves it in a suspiciously uniform way adds evidence. Use CAPTCHA as one voice, not a gatekeeper.
How to Weigh Signals: Independence Matters
The biggest mistake is to combine signals that are actually the same. For example, using both “user agent” and “browser version” is essentially one signal. They are not independent. True independence means one signal failing doesn’t affect the other. A CPU fingerprint and a mouse movement path are independent. An IP and a browser fingerprint are independent. That is why the most accurate systems use many checks across different categories.
BotRefund describes each check—like CPU concurrency or impossible tab speed—as one of 106 independent checks. They then send all signals into a prediction AI that evaluates the complete picture across browser, network, device, and behavior. That corroboration is what drives accuracy, not any single tell.
Decision Framework: Choosing Signals for Your Setup
- Define your risk tolerance. If false positives hurt conversions, weight behavioral signals higher and network signals lower. If fraud is expensive, you can accept more false positives.
- Inventory what you can capture. Client-side JavaScript can get browser and behavior data. Server-side logs give IP, timing, and request patterns. Decide what fits your stack.
- Pick independent categories. Choose at least three: device fingerprint, network data, and behavior. Adding a fourth like session patterns increases accuracy more than adding a second fingerprint.
- Test false positive rate. Run current real users through your signal set. See how many are flagged. Adjust thresholds so legitimate diversity (VPNs, old browsers, accessibility tools) isn’t punished.
- Use a scoring model, not OR logic. Don’t block if any one signal fails. Instead, assign weights and block when the combined score passes a threshold. A model can learn which combinations are most predictive.
Comparison Table: Signal Families and Their Trade-offs
| Signal Family | What It Catches | False Positive Risk | Bypass Difficulty | Best Used With |
|---|---|---|---|---|
| Device/GPU fingerprint | Virtual machines, spoofed profiles, CPU concurrency lies | Medium (rare hardware, privacy tools) | Hard to fully fake, especially with multiple checks | Behavior and network signals |
| Browser/network data | Residential proxies, IP reputation, TLS mismatches | High if using IP alone (VPNs, shared networks) | Moderate—residential proxies bypass IP checks | Device and behavior signals |
| Behavioral interaction | Robotic mouse paths, superhuman speed, no human tremor | Low (real users vary naturally) | Hard to simulate convincingly with AI | Session duration and device fingerprint |
| Session/request patterns | Bursts, uniform durations, no engagement | Low if thresholds are broad | Moderate—bots can add randomness | Behavior and context (CRM outcome) |
| CAPTCHA responses | Automated form fillers, human-in-the-loop farms | High for real users if too hard | Bypassed by solving farms | Behavioral and device signals |
Common Mistakes When Cross-Checking
- Treating correlated signals as independent. User agent plus browser version is one signal. Use distinct layers.
- Blocking on a single anomaly. Real users with privacy tools or corporate networks can look odd. Use evidence, not a verdict.
- Ignoring CRM outcome. In lead gen, a high volume of uncontactable leads is a strong signal. Meta ads blog advice says: combine ad-platform data, website sessions, and CRM outcomes before judging fraud.
- Not retraining models. Bots evolve. What works today may not work next month. Update your thresholds and retrain periodically.
- Forgetting that a bad lead is not always a bot. Unresponsive contacts can be low-intent humans. Excluding them hurts your campaign. Always cross-check with behavioral evidence.
Limitations and When This Approach Does Not Apply
Cross-checking signals works best on sites with meaningful JavaScript interaction. If your site is completely static or has no user engagement, behavioral signals are absent. You’ll rely on network and device data, which are weaker. Also, privacy regulations or browser restrictions may block fingerprinting. In those cases, use server-side signals and CAPTCHA with careful consent.
Low-traffic sites also need caution—statistical patterns need volume. A burst of three leads in one hour might be coincidence. Don’t overreact without more data.
FAQ
Why is IP reputation alone not enough?
Residential proxies route bots through real home IPs, making them look legitimate. Also, shared IPs and VPNs flag real users. Combine IP with other signals.
How many signals should I cross-check?
At least three independent categories. BotRefund uses 106 checks, but even 5-10 well-chosen signals across device, network, and behavior will outperform a single signal.
What is a “CPU concurrency lie”?
It’s a mismatch where a browser claims hardware that doesn’t match its actual processor behavior, common in virtual machines. It’s one objective piece of evidence for a bot profile.
How do I avoid false positives from privacy tools?
Keep signals as evidence, not verdicts. Use a model that weights the whole pattern. Allow exceptions for known tools like ad blockers or VPNs if you can verify them.
What should I do with the signals once I have them?
Feed them into a scoring algorithm or a machine learning model. Set a threshold for blocking. Don’t use OR logic. Review the model periodically.
Is CAPTCHA still useful?
Yes, but it’s not a standalone solution. Modern farms solve CAPTCHAs. Combine CAPTCHA failures with behavioral and device signals for a stronger case.
Further reading and comparison sources
These external sources provide additional context for evaluating the topic. Their inclusion is not an endorsement.
How BotRefund can help
BotRefund uses 106 independent checks across hardware, GPU, device, and behavior signals—like CPU concurrency lies and impossible tab speed—and feeds them into a prediction AI that evaluates the complete pattern. Instead of blocking on a single tell, BotRefund corroborates evidence across browser, network, device, and behavior data to decide whether a visit is bot or human. It also captures video proof of bot clicks and negotiates refunds from Google and Meta, so you can recover wasted ad spend while protecting your campaigns.