Scrape websites that block standard Selenium by patching ChromeDriver to look like a real browser session.
Run automated browser tests against sites with bot-detection without being blocked by fingerprinting checks.
Use headless Chrome for automation on services that detect and block headless browser signals.
Run browser automation in a Docker container with VNC support for remote viewing of the browser session.
Does not hide your IP address, data center IPs or low-reputation home IPs can still be blocked by bot-detection services.
undetected-chromedriver is a Python package that modifies Selenium's ChromeDriver so websites cannot tell they are being accessed by an automated script. Many websites use bot-detection services such as Distil Network, Imperva, DataDome, and Cloudflare to block automated browsers. This package patches the ChromeDriver binary at startup so those detection systems see it as a normal browser session. Installation is a single pip command. The package automatically downloads the correct ChromeDriver version for your Chrome installation and applies the patch without any configuration needed. It works with standard Chrome as well as Brave and other Chromium-based browsers, though less common browsers may need manual tweaking. A common misconception is that the package hides your IP address. It does not. If you run automation from a data center or from a home connection with a low reputation score, bot-detection services can still block you based on your network origin alone. The package only addresses browser fingerprinting and driver-based signals, not network-level signals. The package supports headless mode (running without a visible browser window), though the authors describe it as unofficially supported. A Docker image is available for environments where running a visible browser is inconvenient, including a VNC option for viewing the browser remotely. Recent versions require Python 3.6 or higher and are compatible with Selenium 4.9 or above. Over its release history the library has updated its anti-detection method several times as Chrome and detection vendors evolved. Version 3.4.0 changed how it prevents detection-related variables from being injected in the first place, rather than just renaming them. Version 3.5.0 added compatibility with Selenium 4.9 and above. The full README is longer than what was shown.
← ultrafunkamsterdam on gitmyhub — every repo by this author, as a profile.
Verify against the repo before relying on details.