Benchmarks
Stealth comparison against other anti-detect stacks, plus performance benchmarks for what WebSkrap actually does: resource routing, session reuse, and concurrent fetching.
Comparison
CloakBrowser values are copied from its upstream README. WebSkrap values are from the local live report generated on 2026-06-26 with python scripts\live_stealth_report.py --no-open --report-only.
Feature comparison
WebSkrap patchright vs other stacks
| Feature | Playwright | playwright-stealth | undetected-chromedriver | Camoufox | CloakBrowser | WebSkrap patchright |
|---|---|---|---|---|---|---|
| reCAPTCHA v3 score | 0.1 | 0.3-0.5 | 0.3-0.7 | 0.7-0.9 | 0.9 | Pass in headed mode (>=0.7 gate) |
| Cloudflare Turnstile | Fail | Sometimes | Sometimes | Pass | Pass | Renders challenge surface |
| Patch level | None | JS injection | Config patches | C++ (Firefox) | C++ (Chromium) | Patchright driver + native Chrome options |
| Survives Chrome updates | N/A | Breaks often | Breaks often | Yes | Yes | Depends on Chrome + Patchright |
| Maintained | Yes | Stale | Stale | Unstable | Active | Active project tests |
| Browser engine | Chromium | Chromium | Chrome | Firefox | Chromium | Chrome/Chromium |
| Playwright API | Native | Native | No (Selenium) | No | Native | Native-compatible |
Detection services
Stock Playwright vs CloakBrowser vs WebSkrap patchright headed
| Detection service | Stock Playwright | CloakBrowser | WebSkrap headed | Notes |
|---|---|---|---|---|
| reCAPTCHA v3 | WebSkrap asserts score >=0.7 when Google's demo returns one | |||
| Cloudflare Turnstile (non-interactive) | Public demo renders the challenge surface; WebSkrap does not solve it | |||
| FingerprintJS bot detection | demo.fingerprint.com/web-scraping returns demo data | |||
| BrowserScan bot detection | 0 abnormal checks in headed run | |||
| bot.incolumitas.com | Only tolerated network/spec false positives | |||
| deviceandbrowserinfo.com | isBot: false | |||
| bot.sannysoft.com | Latest run timed out waiting for networkidle | |||
| BrowserLeaks WebRTC | No private ICE candidate IPs exposed | |||
| BrowserLeaks Client Hints | No HeadlessChrome token | |||
| TLS / JA3 visibility | TLS/JA3/JA4 surface is visible; no proxy mismatch without proxy | |||
| DNS leak standard test | Resolver rows are public; optional proxy country/IP expectations supported |
Latest WebSkrap live summary: 24 passed, 2 failed, 1 skipped. Headed: 17 passed, 1 failed. Headless: 7 passed, 1 failed, 1 skipped. The two failures were Sannysoft headed/headless networkidle timeouts; the headless skip was reCAPTCHA v3 not returning a score from Google's public demo.
Performance
Run against a local HTTP server serving a synthetic page with many delayed sub-resources. No external sites are contacted, so results are deterministic. Numbers are from a single machine — run them yourself with python benchmarks.py.
Resource routing
Full page load with delayed assets
| Policy | Time (ms) | vs ALL |
|---|---|---|
DOCUMENTS | 156.98 | |
LITE | 169.42 | |
ALL | 271.23 |
Blocking images, fonts, and media (LITE) cuts load time ~38%; also dropping stylesheets (DOCUMENTS) reaches ~42%.
Session reuse
Warm persistent session vs cold launch per fetch
| Mode | Time (ms) | vs warm |
|---|---|---|
| Warm session reuse | 215.74 | |
| Cold launch per fetch | 411.68 |
Reusing a persistent session avoids per-fetch browser/context startup, roughly 2x faster than launching cold each time.
Concurrency
8 pages per batch from one session
average per page
Benchmarks average 20+ navigations after warm-up. See benchmarks.py for methodology.