Skip to main content

Selenium.webdriver.Chrome replacement with compatibility 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.

Project description

Undetected

PyPI - Version PyPI - Python Version License Downloads

Undetectable selenium chromedriver.

Warning: The main logic of this project is to patch the ChromeDriver binary to avoid detection by anti-bot services. And this is achieved by modifying the chromedriver binary, just that. So please don't equivocate yourself by thinking that just by installing this package you will be 99.9% undetected, no you won't. If you are being detected you'll need to investigate by yourself what's causing it, it can be the package issue, but 70% of the time it's not, and if you still think its the package issue you can open an issue to explain by details whats going on.

Note: This project is a fork of undetected-chromedriver.

Installation

pip install undetected

Simple Usage

import undetected as uc

driver = uc.Chrome()
driver.get("https://example.com")
driver.quit()

Example Usage with Multi-Processing (doesn't work great on Windows)

import undetected as uc
from undetected.patcher import Patcher
from multiprocessing import Process

def worker(idx: int):
    driver = uc.Chrome(user_multi_procs=True)
    driver.get("https://example.com")
    driver.quit()
    
if __name__ == "__main__":
    Patcher.patch()  # patching a unique undetected chromedriver

    processes = [Process(target=worker, args=(i,)) for i in range(4)]
    for p in processes:
        p.start()
    for p in processes:
        p.join()

Example Usage with Multi-Threading

import undetected as uc
from undetected.patcher import Patcher
import threading

def worker(idx: int):
    driver = uc.Chrome(user_multi_procs=True)
    driver.get("https://example.com")
    driver.quit()

if __name__ == "__main__":
    Patcher.patch()  # patching a unique undetected chromedriver

    threads = [threading.Thread(target=worker, args=(i,)) for i in range(4)]
    for t in threads:
        t.start()
    for t in threads:
        t.join()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

undetected-0.0.13.tar.gz (32.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

undetected-0.0.13-py3-none-any.whl (35.9 kB view details)

Uploaded Python 3

File details

Details for the file undetected-0.0.13.tar.gz.

File metadata

  • Download URL: undetected-0.0.13.tar.gz
  • Upload date:
  • Size: 32.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.19

File hashes

Hashes for undetected-0.0.13.tar.gz
Algorithm Hash digest
SHA256 702091ae02719b6e07b65a26a7f4c89c91d995fa0dfe9f7730c4ca7035f9b6df
MD5 a6d7e6068af10a1f432629dc2d8f4e67
BLAKE2b-256 72081d43c94184ca35d02601ff192f3c9dd0c0e03b2e52eabe530d73028afffc

See more details on using hashes here.

File details

Details for the file undetected-0.0.13-py3-none-any.whl.

File metadata

  • Download URL: undetected-0.0.13-py3-none-any.whl
  • Upload date:
  • Size: 35.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.19

File hashes

Hashes for undetected-0.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 a505ee9301b4480d1be4f346f52675b0915555592c9182fb824964127ea3751b
MD5 dc7c97c981d8ff4acf0e17d75686ccb9
BLAKE2b-256 661d8f21f756fb26630bfdae796d7826f91d52fd0eb4d4f74f2c0109f51126f1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page