Comparison
onionwright vs patchright
They work at different layers, and the layer decides what is even reachable. patchright rewrites the Playwright driver. onionwright changes the browser.
Where each signal is decided
| Signal | Decided | patchright | onionwright |
|---|---|---|---|
| navigator.webdriver | Browser, before any script runs | Cannot reach it — the driver never sees this decision | The branch that sets it is deleted from the engine |
| Sec-CH-UA header | Sent with the first request | Cannot reach it — no JavaScript has run yet | The "Google Chrome" brand entry is restored in the build |
| Runtime.enable side effects | CDP protocol | Avoided by never calling it — costs the Console API and ~70 tests | Being fixed in V8 so the driver can simply use CDP |
| Input timing | Trusted events | Playwright's instant jumps | Minimum-jerk paths, Fitts overshoot, 8–12 Hz tremor |
| Main-world execution | Stack frames visible to page script | Caught | Caught — open problem, documented |
When patchright is the right choice
It is free, it is open source, and for a great deal of automation it is enough. If your target checks navigator.webdriver and little else, patchright clears it and costs you nothing. It is what the free tier of ConnectOnion ships.
The reason to move is not that patchright is bad — it is that a driver-side library can only reach what the driver controls, and the signals that survive are the ones decided before it gets a turn. If you have already tried it and are still being flagged, that is why.
Common questions
Is patchright free?
Yes — it is open source and costs nothing, and it is what ConnectOnion's free tier ships. onionwright is the paid step up for when the driver layer is not enough, at $0.10 per browser-hour.
Doesn't patchright already remove navigator.webdriver?
On the driver side, yes, for the common check. But the Sec-CH-UA brand and the WebGL renderer string are set by the browser before any script runs, so a driver-side library cannot reach them — they are fixed in the engine here instead.
Do I have to rewrite my Playwright code to switch?
No. onionwright runs underneath Playwright, the same as patchright — it changes what the browser reports and how input is timed, not your automation code, which works unchanged.
What it costs
$0.10 per browser-hour — about $18 a month at eight hours a day. patchright is free.
Back to onionwright