undetected-chromedriver
('Selenium.webdriver.Chrome replacement with compatiblity for Brave, and other Chromium based browsers.', 'Not triggered by CloudFlare/Imperva/hCaptcha and such.', 'NOTE: results may vary due to many factors. No guarantees are given, except for ongoing efforts in understanding detection algorithms.')
What it is and what it does
undetected-chromedriver is a patched version of Selenium's Chrome WebDriver designed to bypass automated bot-detection systems. It intercepts and modifies the driver binary to remove or mask telltale signs of automation that services like Cloudflare, Imperva, and DataDome use to block scrapers and bots. The package automatically downloads the appropriate driver version for your Chrome installation and applies the patches at runtime.
It works as a drop-in replacement for Selenium's standard Chrome driver, supporting Brave and other Chromium-based browsers with minimal code changes. However, it does not hide your IP address or improve your IP reputation; running from a datacenter or with a low-reputation IP will still trigger detection. The package is distributed under GPL-3.0, meaning any code using it must also be open-source.
Use it for:
- Scraping websites protected by Cloudflare, Imperva, or similar bot-detection services when you have legitimate access rights.
- Automating browser interactions on sites that block standard Selenium WebDriver without triggering detection alerts.
- Testing web applications' anti-bot defenses by simulating realistic automated browser behavior.
- Running automated tests on Chromium-based browsers (including Brave) where standard WebDriver detection would fail.
- Building open-source web automation tools that need to evade detection without relying on proprietary solutions.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Patches Selenium's Chrome WebDriver to avoid triggering anti-bot detection services, automatically downloading and modifying the driver binary to work with Chromium-based browsers.
Yes, with conditions. Install if you need to automate Chromium browsers against anti-bot services and your project is open-source or can comply with GPL-3.0. Avoid if you need proprietary licensing, require frequent maintenance updates, or depend on cutting-edge Selenium features. The high install friction (binary patching at runtime) and aging maintenance status (909 days since last release) mean you should verify that the anti-detection patches still work for your target sites before committing to it.
Install
undetected-chromedriver on PyPI
pip
pip install undetected-chromedriveruv
uv add undetected-chromedriverpoetry
poetry add undetected-chromedriverInstalling undetected-chromedriver
Before you install
High install friction: the package downloads and patches a Chrome driver binary at runtime, requiring network access and system-level modifications. Last release was 909 days ago; the repository remains active with recent commits but maintenance appears infrequent.
License in practice
Licensed under GPL-3.0 (copyleft). Any code that imports and uses this package must also be distributed under a compatible open-source license; proprietary or closed-source projects cannot legally use it.
Quickstart
import undetected_chromedriver as uc
driver = uc.Chrome(headless=True)
driver.get('https://example.com')
driver.save_screenshot('page.png')
driver.quit()
Requires Chrome or a Chromium-based browser installed on the system; the package downloads and patches the driver binary at first use, which may fail without network access or sufficient disk space.
Verify before relying
- Whether the anti-detection patches remain effective against current versions of Distill Network, Imperva, DataDome, and similar services.
- Compatibility with Selenium versions beyond 4.9 and whether the pinned dependency constraint limits future upgrades.
- Whether headless mode detection evasion (mentioned as 'unsupported' in the changelog) is reliable in production.
Package facts
| License | GPL-3.0 (copyleft) |
| Python support | not specified |
| Install friction | high — source build required |
| Runtime dependencies | none |
| Maintenance | aging — 909 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,538,514/month — #3,790 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: undetected-chromedriver-3.5.5.tar.gz
Tags
More Testing packages
Pluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
virtualenvvirtualenv creates isolated Python environments…
permissive · top 100 on PyPI
coverageCoverage.py measures which lines of Python code…
permissive · top 1,000 on PyPI
pytest-asynciopytest-asyncio is a pytest plugin that enables…
permissive · top 1,000 on PyPI
pytest-json-ctrfA pytest plugin that generates test reports in…
permissive · top 1,000 on PyPI
selenium-stealthModifies a Selenium Chrome WebDriver to evade…
permissive · top 15,000 on PyPI
nodrivernodriver is an async browser automation library…
agpl · top 15,000 on PyPI
cloakbrowserLaunches a stealth Chromium browser that evades…
permissive · top 15,000 on PyPI
chromedriver-binaryDownloads and installs the chromedriver binary…
permissive · top 15,000 on PyPI
seleniumbaseSeleniumBase is a browser automation framework…
permissive · top 5,000 on PyPI
zendriverZendriver is an async-first web automation…
agpl · top 15,000 on PyPI
chromedriver-autoinstallerAutomatically downloads and installs the…
permissive · top 15,000 on PyPI
chromedriver-pyDownloads and installs the appropriate…
permissive · top 15,000 on PyPI
pydoll-pythonPydoll automates Chromium-based browsers via…
unclear · top 15,000 on PyPI
geckodriver-autoinstallerAutomatically downloads and installs…
permissive · top 5,000 on PyPI