A list of the most important resources for browser automation with headless browsers.
- Best Browsers
- Protocols
- Web Drivers
- Browser Automation Libraries
- Fake Headless Browser Libraries
- Plugins and Other Tools
A list of the best browsers for browser automation.
Name | Description | Nature |
---|---|---|
Scraping Browser | A cloud GUI browser that is designed for web scraping. Equipped with CAPTCHA solving capabilities, unlimited scalability, IP rotation, cookie management, header customization, and more | Premium [Bright Data's solution] |
Chromium | An open-source web browser that forms the base for Google Chrome | Free |
Google Chrome | A popular web browser known for its speed, security, and developer tools | Free |
Firefox | A fast and privacy-focused browser with excellent developer tools | Free |
Microsoft Edge | Built on Chromium, Microsoft Edge offers performance improvements and compatibility with Chromium-based automation tools | Free |
Safari | Apple's default browser for macOS and iOS, often used for automation in Safari-specific testing | Free |
Opera | A Chromium-based browser with unique features like built-in VPN and ad blocking | Free |
Protocols used for controlling web browsers.
Name | Description | Browsers |
---|---|---|
WebDriver | A remote control interface that enables introspection and control of user agents. It provides a platform- and language-neutral wire protocol as a way for out-of-process programs to remotely instruct the behavior of web browsers | Any |
Chrome DevTools Protocol | A protocol that allows tools to instrument, inspect, debug, and profile Chromium, Chrome, and other Blink-based browsers | Chromium, Chrome, and other Blink-based browsers |
Marionette | A remote protocol that lets out-of-process programs communicate with, instrument, and control Gecko-based browsers | Gecko-based browsers |
WebDriver implementations that enable automation for different browsers.
Name | Description | Controllable Browsers |
---|---|---|
ChromeDriver | A standalone server that implements the W3C WebDriver standard. ChromeDriver is available for Chrome on Android and Chrome on Desktop (Mac, Linux, Windows and ChromeOS) | Chromium-based browsers |
geckodriver | A driver that provides the HTTP API described by the WebDriver protocol to communicate with Gecko browsers, such as Firefox | Gecko-based browsers |
Microsoft Edge WebDriver | A driver that allows you to automate Microsoft Edge by simulating user interaction. Tests that use WebDriver have some advantages over JavaScript unit tests that run in the browser | Edge |
WebDriver for Safari | A driver to write tests in Python, Java, PHP, JavaScript, and any other language whose library is compatible with the W3C WebDriver protocol | Safari |
OperaChromiumDriver | A WebDriver implementation derived from ChromeDriver and adapted by Opera that enables programmatic automation of Chromium-based Opera products for desktop and Android platforms | Opera |
Libraries to control headless browsers via browser automation.
Name | Description | Programming Language |
---|---|---|
puppeteer | A JavaScript library which provides a high-level API to control Chrome or Firefox over the DevTools Protocol or WebDriver BiDi | JavaScript |
playwright | A framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API | JavaScript |
selenium | A browser automation framework and ecosystem | JavaScript |
cypress | A fast, easy and reliable testing for anything that runs in a browser | JavaScript |
webdriverio | A next-gen browser and mobile automation test framework for Node.js | JavaScript |
wendigo | A proper monster for front-end automated testing | JavaScript |
selenium | A browser automation framework and ecosystem | Python |
playwright | A Python version of the Playwright testing and automation library | Python |
pyppeteer | A headless Chrome/Chromium automation library (unofficial port of Puppeteer) | Python |
seleniumbase | A Python's all-in-one framework for web crawling, scraping, testing, and reporting. Supports pytest. UC Mode provides stealth. Includes many tools | Python |
crawlee | A web scraping and browser automation library for Python to build reliable crawlers. Extract data for AI, LLMs, RAG, or GPTs. Download HTML, PDF, JPG, PNG, and other files from websites. Works with BeautifulSoup, Playwright, and raw HTTP. Both headful and headless mode. With proxy rotation | Python |
botasaurus | An all-in-one framework to build awesome scrapers | Python |
splinter | A Python test framework for web applications | Python |
Selenium | A browser automation framework and ecosystem | Java |
Playwright | The Java version of the Playwright testing and automation library | Java |
HtmlUnit | A GUI-less browser for Java programs that models HTML documents and provides an API that allows you to invoke pages, fill out forms, click links, etc | Java |
Jauntium | A Java library that allows you to easily automate Chrome, Firefox, Safari, Edge, IE, and other modern web browsers | Java |
Microsoft.Playwright | A .NET version of the Playwright testing and automation library | .NET |
PuppeteerSharp | A .NET port of the official Node.js Puppeteer API | .NET |
Selenium.WebDriver | A browser automation framework and ecosystem | .NET |
Atata | A C#/.NET test automation framework for web | .NET |
Coypu | An intuitive, robust browser automation for .NET | .NET |
Panther | A browser testing and web crawling library for PHP and Symfony | PHP |
php-webdriver | A PHP client for Selenium/WebDriver protocol | PHP |
chrome-php/chrome | A library to instrument headless chrome/chromium instances from PHP | PHP |
Mink | PHP web browser emulator abstraction | PHP |
chromedp | A faster, simpler way to drive browsers supporting the Chrome DevTools Protocol | Go |
rod | A Chrome DevTools Protocol driver for web automation and scraping | Go |
selenium | A Selenium/Webdriver client for Go | Go |
playwright-go | A browser automation library to control Chromium, Firefox and WebKit with a single API. A port of Playwright for Go | Go |
rust-headless-chrome | A high-level API to control headless Chrome or Chromium over the DevTools Protocol. It is the Rust equivalent of Puppeteer, a Node library maintained by the Chrome DevTools team | Rust |
thirtyfour | A Selenium WebDriver client for Rust, for automated testing of websites | Rust |
chromiumoxide | A Rust crate that provides a high-level and async API to control Chrome or Chromium over the DevTools Protocol | Rust |
playwright-rust | A Playwright port to Rust | Rust |
selenium-webdriver | The Ruby bindings for Selenium/WebDriver | Ruby |
Watir | A Ruby gem that facilitates the writing of automated tests by mimicking the behavior of a user interacting with a website | Ruby |
playwright-ruby-client | A Playwright client for Ruby | Ruby |
puppeteer-ruby | A Ruby port of Puppeteer | Ruby |
RSelenium | R bindings for Selenium WebDriver | R |
chromote | A Chrome remote interface for R | R |
hayalbaz | An R package provides a puppeteer inspired interface to the Chrome Devtools Protocol using chromote | R |
selenium-r | A low-level browser automation interface | R |
WWW::Mechanize::Chrome | A library to automate the Chrome browser | Perl |
Playwright | Perl bindings for Playwright | Perl |
Selenium::Edge | Perl bindings to the Selenium Webdriver server | Perl |
Firefox::Marionette | A library to automate the Firefox browser with the Marionette protocol | Perl |
WWW::Selenium | Perl Client for the Selenium Remote Control test tool | Perl |
Libraries that use browser-like syntax but are purely HTTP clients and cannot render JavaScript.
Name | About | Programming Language |
---|---|---|
python-mechanize | A library for stateful programmatic web browsing in Python | Python |
MechanicalSoup | A Python library for automating interaction with websites | Python |
AngleSharp | The ultimate angle brackets parser library parsing HTML5, MathML, SVG and CSS to construct a DOM based on the official W3C specifications | .NET |
SimpleBrowser | A flexible and intuitive web browser engine designed for automation tasks | .NET |
BrowserKit | A library that simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically | PHP |
Surf | An open source project that implements a virtual web browser that can be controlled programmatically | Go |
mechanize | A library that makes automated web interaction easy | Ruby |
WWW::Mechanize | A module for stateful programmatic web browsing, used for automating interaction with websites | Perl |
Headless browser tools and technologies, as well as plugins to extend the functionality of browser automation libraries.
Name | Description | Programming Language |
---|---|---|
JSDom | A JavaScript implementation of various web standards, for use with Node.js | JavaScript |
puppeteer-extra-plugin-stealth | A plugin for puppeteer-extra and playwright-extra to prevent detection | JavaScript |
puppeteer-extra-plugin-anonymize-ua | A plugin for puppeteer-extra and playwright-extra to anonymize the User-Agent on all pages | JavaScript |
@extra/proxy-router | A plugin for playwright-extra and puppeteer-extra to route proxies dynamically | JavaScript |
puppeteer-extra-plugin-block-resources | A plugin for playwright-extra and puppeteer-extra to block resources (images, media, css, etc.) | JavaScript |
Splash | A lightweight, scriptable browser as a service with an HTTP API | Python |
requestium | An integration layer between Requests and Selenium for automation of web actions | Python |
playwright_stealth | A Python port of the puppeteer-extra-plugin-stealth plugin | Python |
pyppeteerstealth | Pyppeteer stealth plugin to attempt to look like a normal browser | Python |
jBrowserDriver | Programmable, embeddable web browser driver compatible with the Selenium WebDriver spec -- headless, WebKit-based, pure Java | Java |
WebDriverManager | A library that provides automated driver management and other helper features for Selenium WebDriver in Java | Java |
ExtraStealth | A PuppeteerExtraSharp and PlaywrightExtraSharp plugin that applies various evasion techniques to make detection of headless Puppeteer harder | .NET |
AnonymizeUa | A PuppeteerExtraSharp and PlaywrightExtraSharp plugin to anonymize the user-agent on all pages | .NET |
Recaptcha | A PuppeteerExtraSharp and PlaywrightExtraSharp plugin to solve reCAPTCHA automatically | .NET |
BlockResources | A PuppeteerExtraSharp and PlaywrightExtraSharp plugin to block images, documents, etc | .NET |
Chromium Embedded Framework | A simple framework for embedding Chromium-based browsers in other applications | C++ |
go-rod/stealth | A plugin for anti-bot-detection with rod | Go |
webdriver-downloader | A CLI interface & library for WebDriver download | Rust |
parsel | A tool for parallel execution of RSelenium | R |
Firefox::Marionette::Extension::Stealth | A Stealth extension for Firefox::Marionette | Perl |
Erik | Headless browser based on WebKit and HTML parser Kanna | Swift |