ultrafunkamsterdam /undetected-chromedriver

Custom Selenium Chromedriver | Zero-Config | Passes ALL bot mitigation systems (like Distil / Imperva/ Datadadome / CloudFlare IUAM)

★ 12,896⑂ 1,347👁 140⑃ 149● 1,720▤ 0
12,896
stars
+0+0+35
1,347
forks
140
watchers
149
prs
1,720
issues
0
releases
–
discussions

README

undetected_chromedriver 

https://github.com/ultrafunkamsterdam/undetected-chromedriver


Optimized Selenium Chromedriver patch which does not trigger anti-bot services like Distill Network / Imperva / DataDome / Botprotect.io
Automatically downloads the driver binary and patches it.

 Tested until current chrome beta versions
 Works also on Brave Browser and many other Chromium based browsers, but you need to know what you're doing and needs some tweaking.
 Python 3.6++


 Installation 


pip install undetected-chromedriver

or , if you're feeling adventurous, install directly via github


pip install git+https://www.github.com/ultrafunkamsterdam/undetected-chromedriver@master      replace @master with @branchname for other branches



- - -
 Message for all 
I will be putting limits on the issue tracker. It has beeen abused too long.  
any good news?  
Yes, i've opened Undetected-Discussions which i think will help us better in the long run. 
- - -

What this is not
---
THIS PACKAGE DOES NOT, and i repeat DOES NOT hide your IP address, so when running from a datacenter (even smaller ones), chances are large you will not pass! Also, if your ip reputation at home is low, you won't pass!

Running following code from home , and from a datacenter.
python
import undetected_chromedriver as uc
driver = uc.Chrome(headless=True,use_subprocess=False)
driver.get('https://nowsecure.nl')
driver.save_screenshot('nowsecure.png')




  





 3.5.0 
- selenium 4.10 caused some issues. 3.5.0 is compatible and has selenium 4.9 or above pinned. I can't support  example code here 

 easy 

Literally, this is all you have to do. Settings are included and your browser executable is found automagically. This is also the snippet i
recommend using in case you experience an issue.

python
import undetected_chromedriver as uc


driver = uc.Chrome()
driver.get( 'https://nowsecure.nl' )   my own test test site with max anti-bot protection


 more advanced way, including setting profie folder 

Literally, this is all you have to do. If a specified folder does not exist, a NEW profile is created. Data dirs which are specified like
this will not be autoremoved on exit.

python
import undetected_chromedriver as uc


options = uc.ChromeOptions()

 setting profile
options.user_data_dir = "c:\\temp\\profile"

 use specific (older) version
driver = uc.Chrome(
    options = options , version_main = 94
    )   version_main allows to specify your chrome version instead of following chrome global version

driver.get( 'https://nowsecure.nl' )   my own test test site with max anti-bot protection



 expert mode, including Devtool/Wire events  

Literally, this is all you have to do. You can now listen and subscribe to the low level devtools-protocol. I just recently found out that
is also on planning for future release of the official chromedriver. However i implemented my own for now. Since i n

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON