Patchright used less sampled memory in this three-site test. It met the content checks on 4/12 attempts; Camoufox on 10/12. Patchright passed no site that Camoufox missed in this selected set.
. Same host, direct network, no proxy. Two repetitions of each tool and mode; 24 attempts in total.
One browser at a time, then three together
Each concurrent group launched three independent browsers, one for each different site. All four groups reached three overlapping navigation intervals. Fresh contexts kept cookies and page state separate.
Patchright Solo
Met content checks
2 / 6
Per-attempt peak PSS
550.0–589.6 MiB
One worker’s sampled peaks
550.0–589.6 MiB
Patchright Three concurrent browsers
Met content checks
2 / 6
Per-attempt peak PSS
375.7–581.2 MiB
Aggregate peak per group
1144.3–1155.7 MiB
Camoufox Solo
Met content checks
5 / 6
Per-attempt peak PSS
911.8–1144.3 MiB
One worker’s sampled peaks
911.8–1144.3 MiB
Camoufox Three concurrent browsers
Met content checks
5 / 6
Per-attempt peak PSS
808.0–1126.1 MiB
Aggregate peak per group
2342.6–2385.6 MiB
Ranges show the smallest and largest observations, not confidence intervals. PSS means proportional RAM: each Python worker plus its driver and browser children, sampled from spawn through startup, the ready barrier, DOM capture, screenshot and teardown. The coordinator is excluded.
Aggregate peaks add live worker-tree readings from the same sampling sweep. They do not add the separate worker peaks. Shared pages can change how much PSS is assigned to each concurrent worker, so a lower per-worker number does not prove a more efficient browser.
Inspect each concurrent group and its timing
Patchright, repetition 1
Aggregate peak 1155.663 MiB. Group wall time 5.681 s. 3 navigation intervals and 3 capture intervals overlapped.
2026-09-29T20:39:31.980228+00:00 to 2026-09-29T20:39:37.670936+00:00 UTC. Ready barrier released 2026-09-29T20:39:33.234634+00:00. 31 sweeps; longest sweep 0.2700 s.
Camoufox, repetition 1
Aggregate peak 2385.595 MiB. Group wall time 21.317 s. 3 navigation intervals and 3 capture intervals overlapped.
2026-09-29T20:39:39.685031+00:00 to 2026-09-29T20:40:01.011361+00:00 UTC. Ready barrier released 2026-09-29T20:39:46.442026+00:00. 121 sweeps; longest sweep 0.1470 s.
Camoufox, repetition 2
Aggregate peak 2342.598 MiB. Group wall time 19.340 s. 3 navigation intervals and 3 capture intervals overlapped.
2026-09-29T20:40:03.028560+00:00 to 2026-09-29T20:40:22.389617+00:00 UTC. Ready barrier released 2026-09-29T20:40:09.905469+00:00. 120 sweeps; longest sweep 0.1716 s.
Patchright, repetition 2
Aggregate peak 1144.266 MiB. Group wall time 5.790 s. 3 navigation intervals and 3 capture intervals overlapped.
2026-09-29T20:40:24.412514+00:00 to 2026-09-29T20:40:30.236432+00:00 UTC. Ready barrier released 2026-09-29T20:40:25.780374+00:00. 32 sweeps; longest sweep 0.1891 s.
Compare the same target first
Web Scraping Dev met both tools’ checks in all eight attempts. On that shared successful target, Patchright’s solo capture times were 3.891–4.063 s; Camoufox’s were 4.057–6.036 s. Their ranges overlap. Fast failures on the harder pages are not faster usable results.
Web Scraping Dev
Required: Review text loaded by the JavaScript review interface.
All eight Patchright attempts on eBay and Indeed returned HTTP 403. Camoufox met Indeed’s checks in all four attempts. On eBay, Camoufox passed once per mode; its other solo attempt was an HTTP 200 challenge page, and its other concurrent attempt was HTTP 200 with an empty saved DOM. None is silently retried or counted as usable.
What was controlled, and what still differs
Fixed targets and checks
These are the exact Web Scraping Dev reviews, eBay laptop listings and Indeed remote Python jobs URLs from public-30-v1. Web Scraping Dev is the common usable-content reference. eBay and Indeed passed the earlier Camoufox run and returned 403 for Patchright, so they can disprove the access hunch.
“Met checks” requires HTTP 200, a complete DOM capture, minimum text, all required word groups and any listing patterns, with no checked soft-block phrase. The text parser excludes head, script, style, template and noscript. This is a content check, not proof of complete field extraction.
Balanced order and fresh state
Round 1 ran Patchright solo, Camoufox solo, Patchright concurrent, then Camoufox concurrent. Round 2 reversed that complete order and the target order. The schedule was fixed before requests. Each attempt had its own Python worker, browser and fresh in-memory context, with no login or shared cookies.
The coordinator waited until all pages in a group were ready, then released navigation together. Every concurrent group had one target per domain. Groups were separated by two seconds. No three simultaneous attempts went to one site.
Practical modes, not identical engines
Patchright 1.63.0 used the same Chrome for Testing 153.0.8010.12 binary, headless with normal Chromium resources and no interception. Camoufox 0.5.6 used the same Firefox 152.0.4-beta.31 bundle, headless with a generated Linux BrowserForge fingerprint and cached uBlock Origin 1.75.0.
Camoufox’s geometry and fingerprint vary per launch. Both ran normal page JavaScript. Chromium’s native redirect cap was 20; Firefox’s explicit cap was 3. Cookies, engines, fingerprints, filtering and resource policies differ. These observations do not identify a feature as the cause of a block, or establish a universal winner.
Timing, RAM and cleanup
Capture time starts at page.goto and includes DOMContentLoaded navigation, a fixed two-second settle and DOM serialization. Startup, barrier wait, screenshots and teardown are outside that number. Group wall time includes launch through final cleanup. Each captured DOM was capped at 5 MiB.
The target navigation limit was 20 s; readiness 20 s, whole worker 60 s, and whole slice 480 s. Available host RAM had to remain above 3 GiB; attempt-tree PSS below 4 GiB and aggregate PSS below 6 GiB. No guard triggered. The lowest sampled available host RAM was 11245.4 MiB. Cleanup checked recorded child PID/start-time identities only.
Sampling aimed for 100 ms between sweeps; reading processes adds time. Exact sweep durations and spacing are public. PSS is shared-page accounting across the whole host, not an isolated allocation or exact maximum. This was a working host, not an idle lab. Startup/cache state, scheduling, random fingerprints and changing target responses remain possible sources of variation. Two repetitions are too few for a reliability estimate. CPU, cost and proxy performance were not measured.
Expand any record for the exact URL, checked text, errors, timings and hashes. Full DOM, screenshots and driver logs remain private; their hashes and resource samples are public.
Patchright / solo / rep 1 / Web Scraping DevHTTP 200 · usable
Exact original URL
https://web-scraping.dev/reviews
Final URL / redirects
https://web-scraping.dev/reviews / none. 0 recorded hops.
HTTP 200; met all checks. 38,246 UTF-8 DOM bytes; complete capture.
Navigation / capture / attempt
1.878 s / 3.891 s / 4.854 s. Attempt time starts after Python imports and includes startup, barrier, screenshot and teardown.
Worker peak PSS
580.780 MiB, 39 readings; sampled whole worker tree, not just the browser.
Required text
2,008 characters; minimum 300.
unique flavor and great energy boost / excellent energy drink for gamers: matched unique flavor and great energy boost, excellent energy drink for gamers
Listing patterns
No additional pattern
Soft-block / gate phrases
No checked block phrase / No checked gate phrase
Errors
No worker, navigation, DOM capture or screenshot error
Capture inspection
Complete DOM met the unchanged words, text length and listing patterns; not a verified field extraction.
HTTP 200; met all checks. 38,246 UTF-8 DOM bytes; complete capture.
Navigation / capture / attempt
4.028 s / 6.036 s / 9.030 s. Attempt time starts after Python imports and includes startup, barrier, screenshot and teardown.
Worker peak PSS
913.128 MiB, 78 readings; sampled whole worker tree, not just the browser.
Required text
2,008 characters; minimum 300.
unique flavor and great energy boost / excellent energy drink for gamers: matched unique flavor and great energy boost, excellent energy drink for gamers
Listing patterns
No additional pattern
Soft-block / gate phrases
No checked block phrase / No checked gate phrase
Errors
No worker, navigation, DOM capture or screenshot error
Capture inspection
Complete DOM met the unchanged words, text length and listing patterns; not a verified field extraction.
HTTP 200; met all checks. 38,246 UTF-8 DOM bytes; complete capture.
Navigation / capture / attempt
1.796 s / 3.807 s / 5.072 s. Attempt time starts after Python imports and includes startup, barrier, screenshot and teardown.
Worker peak PSS
581.194 MiB, 30 readings; sampled whole worker tree, not just the browser.
Required text
2,008 characters; minimum 300.
unique flavor and great energy boost / excellent energy drink for gamers: matched unique flavor and great energy boost, excellent energy drink for gamers
Listing patterns
No additional pattern
Soft-block / gate phrases
No checked block phrase / No checked gate phrase
Errors
No worker, navigation, DOM capture or screenshot error
Capture inspection
Complete DOM met the unchanged words, text length and listing patterns; not a verified field extraction.
HTTP 200; met all checks. 38,246 UTF-8 DOM bytes; complete capture.
Navigation / capture / attempt
2.021 s / 4.047 s / 10.731 s. Attempt time starts after Python imports and includes startup, barrier, screenshot and teardown.
Worker peak PSS
826.594 MiB, 69 readings; sampled whole worker tree, not just the browser.
Required text
2,008 characters; minimum 300.
unique flavor and great energy boost / excellent energy drink for gamers: matched unique flavor and great energy boost, excellent energy drink for gamers
Listing patterns
No additional pattern
Soft-block / gate phrases
No checked block phrase / No checked gate phrase
Errors
No worker, navigation, DOM capture or screenshot error
Capture inspection
Complete DOM met the unchanged words, text length and listing patterns; not a verified field extraction.
HTTP 200; met all checks. 38,246 UTF-8 DOM bytes; complete capture.
Navigation / capture / attempt
4.688 s / 6.701 s / 13.458 s. Attempt time starts after Python imports and includes startup, barrier, screenshot and teardown.
Worker peak PSS
808.021 MiB, 86 readings; sampled whole worker tree, not just the browser.
Required text
2,008 characters; minimum 300.
unique flavor and great energy boost / excellent energy drink for gamers: matched unique flavor and great energy boost, excellent energy drink for gamers
Listing patterns
No additional pattern
Soft-block / gate phrases
No checked block phrase / No checked gate phrase
Errors
No worker, navigation, DOM capture or screenshot error
Capture inspection
Complete DOM met the unchanged words, text length and listing patterns; not a verified field extraction.
HTTP 200; met all checks. 38,246 UTF-8 DOM bytes; complete capture.
Navigation / capture / attempt
1.879 s / 3.889 s / 5.198 s. Attempt time starts after Python imports and includes startup, barrier, screenshot and teardown.
Worker peak PSS
562.154 MiB, 31 readings; sampled whole worker tree, not just the browser.
Required text
2,008 characters; minimum 300.
unique flavor and great energy boost / excellent energy drink for gamers: matched unique flavor and great energy boost, excellent energy drink for gamers
Listing patterns
No additional pattern
Soft-block / gate phrases
No checked block phrase / No checked gate phrase
Errors
No worker, navigation, DOM capture or screenshot error
Capture inspection
Complete DOM met the unchanged words, text length and listing patterns; not a verified field extraction.
HTTP 200; met all checks. 38,246 UTF-8 DOM bytes; complete capture.
Navigation / capture / attempt
2.048 s / 4.057 s / 7.024 s. Attempt time starts after Python imports and includes startup, barrier, screenshot and teardown.
Worker peak PSS
911.844 MiB, 63 readings; sampled whole worker tree, not just the browser.
Required text
2,008 characters; minimum 300.
unique flavor and great energy boost / excellent energy drink for gamers: matched unique flavor and great energy boost, excellent energy drink for gamers
Listing patterns
No additional pattern
Soft-block / gate phrases
No checked block phrase / No checked gate phrase
Errors
No worker, navigation, DOM capture or screenshot error
Capture inspection
Complete DOM met the unchanged words, text length and listing patterns; not a verified field extraction.
HTTP 200; met all checks. 38,246 UTF-8 DOM bytes; complete capture.
Navigation / capture / attempt
2.053 s / 4.063 s / 4.889 s. Attempt time starts after Python imports and includes startup, barrier, screenshot and teardown.
Worker peak PSS
564.717 MiB, 39 readings; sampled whole worker tree, not just the browser.
Required text
2,008 characters; minimum 300.
unique flavor and great energy boost / excellent energy drink for gamers: matched unique flavor and great energy boost, excellent energy drink for gamers
Listing patterns
No additional pattern
Soft-block / gate phrases
No checked block phrase / No checked gate phrase
Errors
No worker, navigation, DOM capture or screenshot error
Capture inspection
Complete DOM met the unchanged words, text length and listing patterns; not a verified field extraction.
The coordinator reuses the pinned single-worker code, adding only a barrier immediately before navigation timestamps. It refuses changed runner or browser hashes and an existing output directory. It does not install a browser or start a paid service. Rerunning sends 24 new target navigations, plus ordinary page resources and redirects.
From a repository checkout, provide the existing version-matched Python environments, exact browser paths and cached Camoufox addon. This host used:
The earlier 150 attempts on 30 sites remain a separate dated sample. This smaller repeated slice adds resource and concurrency evidence; it does not replace those records or rank every tool.