nodriver is a Python library for asynchronous web automation and scraping that evades anti-bot detection systems.
The tool addresses the problem of web scraping and browser automation being blocked by anti-bot defenses like Captcha, CloudFlare, Imperva, and hCaptcha. It replaces Selenium and chromedriver with direct communication to the browser via the Chrome DevTools Protocol, which provides better resistance against web application firewalls while delivering significant performance improvements. The library is fully asynchronous, enabling concurrent operations and faster execution compared to synchronous alternatives.
Developers should choose this tool if they need to automate browsers or scrape websites protected by anti-bot systems and want minimal setup overhead. It works with Chromium, Chrome, Edge, and Brave. The library prioritizes usability with sensible defaults—a basic script requires only one or two lines of code—while remaining fully customizable through access to all Chrome DevTools Protocol domains, methods, and events. It automatically manages browser profiles, creating fresh ones per run and cleaning them up on exit, though persistent profiles can be specified. Features include cookie persistence to avoid repeated logins, element finding by text content, screenshots, scrolling, and multi-tab or multi-window management. The README does not compare it to other packages beyond noting it is the official successor to Undetected-Chromedriver and removes the dependency on Selenium and chromedriver binaries.
The project shows active maintenance with regular updates addressing user issues and feature requests. Development focuses on expanding anti-detection capabilities and improving the asynchronous architecture. The maintainer responds promptly to bug reports and incorporates community feedback into releases.