$npx skillfedfor your agent

nodriver

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

With conditionsPyPI BrowsersReleased May 2026405.6K downloads / moPure Python

Decision gist · record as of 2026-08-14

pure-Python wheel — nodriver-0.50.3-py3-none-any.whl
v0.50.3 · released 2026-05-13 · Python >=3.9 · 3 runtime deps: mss, websockets, deprecated

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

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
Same gist for agents: .md · .json

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.

With conditions

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

LicenseNot declared agpl
Python supportSupports the current Python release >=3.9
Install frictionLow. Pure-Python wheel
Runtime dependencies
3 packages
msswebsocketsdeprecated
MaintenanceActively maintained 93 days since the last release
Last repo commit
First released
Downloads405,563 / month, #6,903 on PyPI 30-day window, as of 2026-08-14
Known vulnerabilitiesNone 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

Capabilities
async browser automationweb scraping anti-detectionchromium control without webdrivercloudflare bypassheadless browser automationWAF evasion scrapingundetected chrome automation
Topics
anti-detectionasync-firstbrowser-automation
PyPI keywords
webdriverbrowsercaptchascrapingseleniumnavigatorpython3cloudflarechromedriveranti-botbot-detectioncloudflare-bypassdistilanti-detection

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

playwright Worth it
PyPI · Testing · released Jul 2026

Automate Chromium, Firefox, and WebKit browsers via a single Python API for web testing, scraping, and interaction automation.

Apache-2.0compiled wheel · 3.10+
92.5Mdownloads / mo
browser-harness With conditions
PyPI · Testing · released Jul 2026

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.

MITpure Python · 3.11+
7.1Mdownloads / mo
patchright With conditions
PyPI · Testing · released Jul 2026

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.

Apache-2.0compiled wheel · 3.10+
4.2Mdownloads / mo
seleniumbase With conditions
PyPI · Software Development · released Aug 2026

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.

permissive licensepure Python · 3.9+
3.1Mdownloads / mo
browserforge Worth it
PyPI · Python Modules · released Feb 2026

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…

Apache-2.0pure Python
2.2Mdownloads / mo
proxy.py Worth it
PyPI · Python Modules · released Feb 2025

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.

BSD-3-Clausepure Python · 3.6+
1.0Mdownloads / mo

See also zendriver · undetected-chromedriver · pydoll-python · cloakbrowser · pyppeteer · selenium · requestium · selenium-stealth · chromedriver-binary · mycdp

Further reading