skillfed

nodriver

[Docs here](https://ultrafunkamsterdam.github.io/nodriver)

nodriver v0.50.3 405.6K downloads/30d#6,903 on PyPI4,652
AGPL license GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this… (full text in the JSON record) Active released

What it is and what it does

nodriver automates browser interactions by communicating directly with Chrome DevTools Protocol instead of using WebDriver or Selenium, which reduces detection signatures. It is fully asynchronous and designed to work with chromium, chrome, edge, and brave. The library aims to stay undetected against anti-bot solutions while maintaining a minimal, intuitive API—most tasks work with sensible defaults and require only a few lines of code.

The package handles profile management (creating fresh profiles per run and cleaning them up), cookie persistence, element selection by text or CSS selector (including iframe traversal), and direct access to the full Chrome DevTools Protocol for advanced customization. It depends on mss for screenshot capture, websockets for protocol communication, and the deprecated library for backward compatibility. Requires a local Chromium-based browser and Python 3.9 or later.

Use it for:

  • Scraping sites protected by Cloudflare or other WAFs where traditional WebDriver detection is problematic
  • Automating login workflows and saving/reusing cookies to avoid repeated authentication
  • Extracting data from JavaScript-heavy pages with iframe content using text-based element lookup
  • Testing web applications in headless environments with anti-bot evasion
  • Clicking CAPTCHA verification buttons and handling JavaScript challenges programmatically

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

nodriver is an async browser automation library that controls Chromium-based browsers via direct protocol communication, designed to evade anti-bot detection while providing a simple, high-level interface.

Yes, with conditions. Install if you need browser automation that evades anti-bot detection and prefer async-first design. The low install friction and active maintenance are strong points. However, the GNU AFFERO GENERAL PUBLIC LICENSE Version 3 requires careful review if you plan to modify and deploy this on a server or in a SaaS product—source code disclosure obligations apply. Also verify that a Chromium-based browser is available in your deployment environment.

Install

nodriver on PyPI

pip

pip install nodriver

uv

uv add nodriver

poetry

poetry add nodriver

Installing nodriver

Before you install

Low install friction; pure Python wheel with only three runtime dependencies (mss, websockets, deprecated). Actively maintained with recent commits and solid GitHub presence (4652 stars). Requires a local Chromium-based browser installation and Python 3.9+.

License in practice

Licensed under GNU AFFERO GENERAL PUBLIC LICENSE Version 3, a copyleft license requiring that if you modify and deploy nodriver on a network server, you must provide source code access to users. For local use or closed-source internal tools, this is less restrictive, but distribution or SaaS deployment of modifications requires source disclosure.

Quickstart

import nodriver as uc

async def main():
    browser = await uc.start()
    page = await browser.get('https://example.com')
    await page.close()

uc.loop().run_until_complete(main())

Requires a Chromium-based browser (Chrome, Edge, Brave) installed locally; Python 3.9 or later; on headless systems without a display, Xvfb or similar display emulation is needed.

Verify before relying

  • Whether anti-detection techniques remain effective against current WAF implementations and bot-detection services
  • Performance characteristics and memory footprint compared to alternatives for large-scale scraping
  • Exact Xvfb requirements and configuration for headless deployment

Package facts

License GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this… (full text in the JSON record) (agpl)
Python support supports the current Python release (>=3.9)
Install friction low — pure-Python wheel
Runtime dependencies 3 — mss, websockets, deprecated
Maintenance actively maintained — 93 days since the last release
Last repo commit
First released
Downloads 405,563/month — #6,903 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: nodriver-0.50.3-py3-none-any.whl

Keywords: webdriver, browser, captcha, scraping, selenium, navigator, python3, cloudflare, chromedriver, anti-bot, bot-detection, cloudflare-bypass, distil, anti-detection

Development Status :: 3 - AlphaIntended Audience :: DevelopersProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Topic :: Internet :: WWW/HTTP :: Browsers

Tags

async browser automationweb scraping anti-detectionchromium control without webdrivercloudflare bypassheadless browser automationWAF evasion scrapingundetected chrome automation
anti-detectionasync-firstbrowser-automation

More Browsers packages

Further reading