nodriver
[Docs here](https://ultrafunkamsterdam.github.io/nodriver)
Decision gist · record as of 2026-08-14
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.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- 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.
- 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).
License · maintenance · safety
(agpl) — 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.
last release 2026-05-13 (93 days) · last repo commit 2026-05-13 · 4,652 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 405,563 downloads/mo, #6,903 on PyPI
Alternatives
Verify before relying
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())- 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
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 on it.
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
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+.
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.
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())
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 | Not declared agpl |
| Python support | Supports the current Python release >=3.9 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 3 packagesmsswebsocketsdeprecated |
| 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 |
| Classifiers | 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 |
Evidence: nodriver-0.50.3-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “web scraping anti-detection”
- nodrivernodriver is an async browser automation library that controls…
- camoufoxPython wrapper around Playwright that automatically generates and…
- rebrowser-playwrightA patched version of Playwright that automates Chromium, Firefox, and…
Give your agent the search over MCP, or paste the wish link into any chat.
More Browsers packages
Automate Chromium, Firefox, and WebKit browsers via a single Python API for web testing, scraping, and interaction automation.
Connects an LLM agent directly to a real Chrome/Chromium browser via the Chrome DevTools Protocol, allowing the agent to control browser tasks and self-improve by writing helper code during execution.
Patchright is an undetected fork of Playwright that automates Chromium-based browsers while evading bot-detection systems. It works as a drop-in replacement for Playwright's sync and async APIs.
However, install it only if standard Playwright fails due to detection—anti-detection techniques are inherently fragile and may break as detection systems evolve.
SeleniumBase is a browser automation framework that combines Selenium WebDriver with pytest integration, CDP mode for bot-detection bypass, and tools for web testing, scraping, and crawling.
However, the 60 runtime dependencies are substantial—evaluate whether you need the full feature set or if a lighter alternative suits your use case.
Generates realistic browser headers and device fingerprints that mimic actual web traffic patterns, using a Bayesian generative model to avoid detection.
Install it if you need realistic browser headers or fingerprints for scraping, testing, or automation; skip it if you don't interact with anti-bot systems or…
A lightweight, pluggable HTTP proxy server framework that handles forward proxying, reverse proxying, and TLS interception with support for custom plugins and asyncio-based concurrency.
See also zendriver · undetected-chromedriver · pydoll-python · cloakbrowser · pyppeteer · selenium · requestium · selenium-stealth · chromedriver-binary · mycdp