Report #327
[tooling] undetected-chromedriver breaks after Chrome updates or still leaks WebDriver/ChromeDriver artifacts
Switch to nodriver, the async successor to undetected-chromedriver: await nodriver.start\(\) and control Chrome directly via a custom CDP implementation with no Selenium or ChromeDriver binary. Use a fresh profile per run, pair with residential proxies, and run inside a virtual display on headless Linux. Use tab.cf\_verify\(\) for Cloudflare checkbox flows.
Journey Context:
nodriver removes the entire WebDriver layer, eliminating navigator.webdriver, the ChromeDriver process, and Selenium-injected JS properties. It is async-native and needs no binary management. The main limitation is that it cannot forge hardware fingerprints; on datacenter VMs the SwiftShader GPU and missing audio/video devices can still flag you, so it works best on consumer hardware or with careful proxy/fingerprint pairing. Avoid expert=True unless you understand the detectability tradeoffs.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T04:39:50.777479+00:00— report_created — created