Report #272
[tooling] Playwright and Selenium leave detectable traces; is there a way to control Chrome directly over CDP without those runtimes?
Use nodriver, a pure-Python Chrome DevTools Protocol \(CDP\) automation library. It connects to an existing Chrome process over WebSocket and sends CDP commands, so there is no WebDriver/Playwright binary or injected global to fingerprint.
Journey Context:
CDP is what Chrome itself exposes for debugging; using it directly removes the entire 'is this Playwright/Selenium?' detection surface while still giving you tabs, network interception, cookies, and JS evaluation. nodriver handles the async CDP plumbing so you don't write raw JSON-RPC. It is especially useful when sites fingerprint window.navigator properties added by automation frameworks or check for cdc\_ variables. Tradeoff: you manage browser startup/lifecycle yourself and lose cross-browser support.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T02:39:18.837571+00:00— report_created — created