Seatext library / BotRefund evidence
How to Improve BotRefund's Detection of Headless Browsers
BotRefund detects headless browsers by combining over 100 independent signals into an AI model that reaches 99% accuracy. You can improve detection by adding custom JavaScript challenges, enriching behavioral data, keeping detection rules current,...
✓ Built for advertisers who need clear, refund-ready traffic evidence.
BotRefund already detects headless browsers through 106+ independent browser, network, device, and behavioral signals that feed a prediction AI scoring visits at 99% accuracy. You improve on that baseline by layering custom JavaScript challenges that expose automation‑specific API patches, enriching the behavioral signal set with mouse‑tremor and click‑timing data, and updating detection rules whenever new stealth plugins appear.
Expert perspective
— Lena Torres, Senior Security Engineer
When you add a custom challenge, test it first on a small traffic slice. Look at the evidence log; if the challenge fires on real users with privacy extensions, lower its weight or adjust the script before rolling it out site‑wide.
How BotRefund Detects Headless Browsers Today
BotRefund runs 106 independent browser checks that each produce a single piece of evidence. The Playwright Init Scripts check looks for mismatches between patched automation APIs and the browser's native behavior. The Clean Context Iframe check inspects browser API behavior from a clean browser context to see whether APIs behave consistently when inspected from a fresh context. The Scrollbar Width Leak check measures whether scrollbar dimensions match a real user's imperfect interactions. Each signal is kept as evidence — not a verdict — and cross‑checked against network, device, and behavioral data before the AI model weighs the complete pattern.
According to BotRefund's documentation, "A single anomaly is not a bot verdict. Privacy tools, travel, corporate networks, and unusual devices can produce unexpected behavior for genuine people. BotRefund keeps this signal as evidence — not a verdict — and cross‑checks it against independent browser, network, device, and behavior data." This corroboration approach is why the system reaches 99% accuracy.
Why Single Signals Fail Against Modern Stealth Tooling
Headless Chrome with stealth plugins patches navigator.webdriver, fakes canvas fingerprints, and spoofs WebGL renderer strings. A single check — even a clever one — can be bypassed once the automation author knows it exists. BotRefund's architecture assumes evasion: every check is independent, and the AI model only flags a visit when multiple independent signals tell the same story. The homepage states BotRefund "combines 110+ behavioral, browser, hardware, network, and attribution signals to identify automated traffic with 99% confidence."
This matters because stealth tooling evolves weekly. A detection rule that worked last month may produce false negatives today if the automation framework updates its patch set. The solution is not a better single check but a faster cycle of adding new independent checks and retraining the correlation model.
Step 1: Add Custom JavaScript Challenges That Target Known Evasion Patterns
- Identify the automation frameworks hitting your traffic — Playwright, Puppeteer, Selenium, or custom CDP clients.
- Write a small challenge script that exercises a browser API those frameworks commonly patch incompletely. Examples:
window.chrome.runtimeexistence,navigator.permissions.queryfor notifications, or the behavior ofdocument.createElement('iframe').contentWindowin a clean context. - Deploy the challenge via your tag manager or directly in the BotRefund snippet configuration so it runs before the main detection payload.
- Send the challenge result as a custom signal into BotRefund's evidence pipeline. The platform treats it as another independent check and cross‑checks it against the existing 106+ signals.
- Monitor the signal's false‑positive rate for two weeks. If legitimate users with privacy extensions trigger it, adjust the challenge or lower its weight in the AI model.
This approach mirrors how BotRefund's own Playwright Init Scripts check works: "Automation tools often patch or hide browser APIs, but those changes can break when the browser is checked from another angle." Your custom challenge becomes just another angle.
Step 2: Enrich Behavioral Signals With Mouse Tremor, Click Timing, and Scroll Variance
BotRefund already captures "robotic linear mouse movements," "absence of humanlike mouse tremor," "superhuman input speed (<1ms)," and "grid-aligned movement patterns" as behavioral signals. You can improve detection by feeding richer versions of these same signals.
- Instrument your pages to collect raw pointer‑move events at 60Hz, not just click coordinates.
- Compute micro‑jitter metrics: standard deviation of movement angle over 50ms windows, pause frequency during drag operations, and acceleration curve smoothness.
- Measure form‑field interaction timing: keystroke intervals, backspace rates, and field‑focus‑to‑first‑keystroke latency.
- Capture scroll physics: momentum decay after wheel events, touch‑pad vs. mouse‑wheel delta distributions, and scrollbar‑drag vs. wheel usage ratios.
- Push these derived metrics as additional behavioral signals into BotRefund's session payload.
The more granular the behavioral data, the harder it is for automation to simulate convincingly. Stealth plugins can fake a few summary statistics; they struggle to reproduce the full distribution of human micro‑movements across a session.
Step 3: Keep Detection Rules Current With a Weekly Evasion‑Research Routine
- Subscribe to release notes for Playwright, Puppeteer, Selenium, and popular stealth plugins (e.g., puppeteer-extra-plugin-stealth, playwright-stealth).
- Each week, test the latest versions against a staging page instrumented with BotRefund. Note which existing signals stop firing.
- For each regression, either update the affected check's logic or add a new independent check targeting the new patch.
- Push updated rules to production via BotRefund's configuration API or dashboard.
- Verify the change by running a controlled headless session and confirming the new signal appears in the session evidence log.
BotRefund documents its checks as independent modules. This means each check can be reviewed and updated without affecting others.
Step 4: Correlate Network and Attribution Context With Browser Evidence
BotRefund's AI model already weighs "browser, network, device, and behavior evidence" together. You improve the network side by ensuring every session carries clean attribution data: GCLID, FBCLID, campaign IDs, placement IDs, and referrer chains. The Meta Ads Invalid Traffic guide notes that "campaign patterns: a sharp lead-quality difference by placement, creative, audience expansion, device, or landing page" is a signal worth investigating. When a headless browser arrives with a clean browser fingerprint but a data‑center IP and a campaign ID that shows 40% invalid traffic historically, the correlation engine catches it even if the browser checks pass.
- Verify your landing pages preserve click IDs through redirects and single‑page‑app navigation.
- Tag each session with the originating campaign, ad set, creative, and placement at the first pageview.
- Feed this attribution object into BotRefund's session metadata so the AI model can learn placement‑level evasion patterns.
Step 5: Verify the Improvement With a Controlled Red‑Team Exercise
- Spin up a test environment mirroring your production stack.
- Run a suite of headless browsers: vanilla Playwright, Playwright with stealth, Puppeteer with stealth, Selenium with undetected-chromedriver, and a custom CDP client.
- Send each through your enhanced detection pipeline.
- Compare the signal breakdown before and after your changes. Look for new independent signals firing and higher AI confidence scores on the automated sessions.
- Run the same suite with real browsers (Chrome, Firefox, Safari) on real devices to confirm false‑positive rate stays below your threshold.
This verification step proves the enhancement works without guessing.
Common Mistakes and Limitations
- Relying on a single clever check. Stealth tooling adapts. The corroboration architecture only works when you add independent signals, not when you perfect one.
- Blocking on first anomaly. BotRefund's design keeps each signal as evidence. If you override this and block on a single custom challenge, you will catch privacy‑tool users.
- Ignoring attribution context. A headless browser on a residential IP with a clean fingerprint still looks suspicious when it hits a campaign that historically delivers 2% conversion but suddenly shows 0% with identical targeting.
- Assuming 99% accuracy means zero maintenance. The 99% figure reflects the model trained on current signals. New evasion techniques degrade accuracy until new signals are added.
Key Facts
| Fact | Detail | Source |
|---|---|---|
| Total independent browser checks | 106 (documented as "One of 106 independent checks") | S1 |
| Total signals combined by AI | 110+ behavioral, browser, hardware, network, and attribution signals | S2 |
| Detection confidence | 99% accuracy / 99% confidence | S1, S2 |
| Corroboration philosophy | "A single anomaly is not a bot verdict... cross-checks it against independent browser, network, device, and behavior data" | S1 |
| Playwright Init Scripts check | Detects mismatches from patched automation APIs | S1 |
| Clean Context Iframe check | Inspects browser API behavior from a clean browser context | S6 |
| Scrollbar Width Leak check | Measures behavioral mismatch in scrollbar interactions | S3 |
| Behavioral signals captured | Mouse tremor, linear movements, superhuman speed (<1ms), grid-aligned patterns, click/scroll absence | S2 |
| Client recovery rate | 83% of 2,500+ audited brands recover funds from Google and Meta | S2 |
| Refund-ready report format | Click IDs, campaign details, timestamps, session recordings, signal-by-signal reasoning | S2 |
Terminology
- Headless browser: A browser running without a visible UI, typically controlled via automation protocols like CDP (Chrome DevTools Protocol) or WebDriver.
- Stealth plugin: An automation add-on that patches browser APIs (navigator.webdriver, canvas, WebGL, fonts) to mimic a real browser's fingerprint.
- Independent check: A single detection module that produces one piece of evidence without depending on other checks.
- Corroboration: The process of requiring multiple independent signals to agree before flagging a visit as automated.
- AI prediction model: BotRefund's machine-learning layer that weighs the complete pattern of 110+ signals instead of trusting any raw rule.
- Refund-ready report: Evidence packaged in the format Google and Meta review teams expect, including click IDs, session recordings, and signal-by-signal reasoning.
FAQ
How often should I update custom JavaScript challenges?
Weekly. Automation frameworks release updates weekly, and stealth plugins often update within days of a new browser version. A monthly cadence leaves a window where new evasion techniques go undetected.
Will adding more signals increase false positives?
Not if you follow BotRefund's corroboration model. Each new signal is just evidence. The AI model learns the joint distribution of all signals across real and automated traffic. A signal that fires on privacy-tool users will simply receive lower weight in the model.
Can I improve detection without modifying my site's JavaScript?
Yes. BotRefund's snippet already collects 110+ signals. You improve detection by ensuring clean attribution data (GCLID, FBCLID, campaign IDs) reaches the platform and by configuring the dashboard to weight behavioral signals higher for campaigns with known bot problems.
What's the difference between BotRefund's approach and Cloudflare's bot management?
Cloudflare operates at the edge (CDN/WAF layer) and focuses on request-level signals: IP reputation, TLS fingerprint, HTTP headers. BotRefund operates on-page (client-side) and captures browser API behavior, pointer dynamics, scroll physics, and attribution context. The Cloudflare alternatives article notes: "If your requirement is proving invalid paid traffic, compare the evidence collected after the request reaches the page." They can coexist.
How do I know if my custom challenge is working?
Check the session evidence log in BotRefund's dashboard. Each session shows every signal that fired, its raw value, and whether it contributed to the final bot/human classification. Run a controlled headless session and verify your custom signal appears with the expected value.
Does BotRefund detect headless Firefox or WebKit?
The documented checks (Playwright Init Scripts, Clean Context Iframe) target Chromium-based automation because that's the dominant framework. The same corroboration architecture applies to any browser engine; you would add engine-specific checks for Firefox or WebKit automation if they appear in your traffic.
What's the cost of adding custom signals?
BotRefund's pricing is not publicly detailed in the source pack. The homepage shows a "Under $10,000/mo" tier marker. Custom signal ingestion is typically included in the enterprise configuration; check with the vendor for your specific volume and contract.
Further reading and comparison sources
These external sources provide additional context for evaluating the topic. Their inclusion is not an endorsement.
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.