nodrivervscurl-cffi
nodriver is a Python library for browser automation that communicates directly with the browser via the Chrome DevTools Protocol (CDP), without relying on Selenium or chromedriver. It is the successor to undetected-chromedriver, created by the same author, and is designed from the ground up to be undetectable by anti-bot systems.
Key advantages over traditional browser automation:
- No chromedriver dependency Communicates directly with Chrome/Chromium via CDP websocket, eliminating the most common detection vector (chromedriver fingerprint).
- Undetectable by default
Does not set the
navigator.webdriverflag, does not inject automation-related JavaScript, and avoids CDP detection patterns that anti-bot systems look for. - Fast and lightweight Without the Selenium/WebDriver protocol overhead, nodriver is significantly faster at launching browsers and executing commands.
- Async-first Built entirely on Python's asyncio, enabling efficient concurrent browser automation.
- Simple API Clean, Pythonic API that is easier to use than raw CDP or Selenium.
nodriver is particularly useful for scraping websites protected by advanced anti-bot systems like Cloudflare, DataDome, or PerimeterX, where standard Selenium or Playwright setups get detected and blocked.
Curl-cffi is a Python library for implementing curl-impersonate which is a
HTTP client that appears as one of popular web browsers like:
- Google Chrome
- Microsoft Edge
- Safari
- Firefox
Unlike requests and httpx which are native Python libraries, curl-cffi uses cURL and inherits it's powerful features
like extensive HTTP protocol support and detection patches for TLS and HTTP fingerprinting.
Using curl-cffi web scrapers can bypass TLS and HTTP fingerprinting.