Skip to main content

Undetected Python version of the Playwright testing and automation library.

Project description

🎭 Patchright Python


Patchright Version GitHub Downloads (all assets, all releases)

Patchright is a patched and undetected version of the Playwright Testing and Automation Framework.
It can be used as a drop-in replacement for Playwright.

[!NOTE]
This repository serves the Patchright-Python Package. To use Patchright with NodeJS, check out the NodeJS Package. Also check out the main Patchright Driver Repository


Sponsors

Hyperbrowser Banner Ad
If you’re looking for a high-performance browser automation platform checkout Hyperbrowser. It’s ideal for AI Agents, large-scale web scraping and automated testing.
Hyperbrowser delivers cloud-based browser infrastructure that scales instantly from a few sessions to thousands, with built-in CAPTCHA solving, stealth fingerprinting, and a global proxy network. It integrates seamlessly with Puppeteer, Playwright, and Selenium, so you can be up and running in minutes, no server or proxy management required.

Key Features:

  • Instant scaling: Launch 1,000+ concurrent browsers
  • Captcha Solving: Handles reCAPTCHA, Cloudflare, AWS, and more
  • Stealth mode: Dynamic, human-like fingerprints for undetectable automation
  • Global proxy network: 170+ countries with rotation and geo-targeting
  • Built-in debugging: Live view and session replay for real-time monitoring
  • 1-line integration: Works with Puppeteer, Playwright, Selenium in Node.js or Python

👉 Learn more at hyperbrowser.ai


Thordata Banner

Thordata - Your First Plan is on Us! 💰Get 100% of your first residential proxy purchase back as wallet balance, up to $900.

⚡ Why Thordata?

🌍 190+ real residential & ISP IP locations
🔐 Fully encrypted, ultra-secure connections
🚀 Optimized for web scraping, ad verification & automation workflows

🔥Don’t wait — this is your best time to start with Thordata and experience the safest, fastest proxy network.


Install it from PyPI

# Install Patchright with Pip from PyPI
pip install patchright
# Install Chromium-Driver for Patchright
patchright install chromium

Usage

Just change the import and use it like playwright. Patchright is a drop-in-replacement for Playwright!

[!IMPORTANT]
Patchright only patches CHROMIUM based browsers. Firefox and Webkit are not supported.

# patchright here!
from patchright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto('http://playwright.dev')
    page.screenshot(path=f'example-{p.chromium.name}.png')
    browser.close()
import asyncio
# patchright here!
from patchright.async_api import async_playwright

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto('http://playwright.dev')
        await page.screenshot(path=f'example-{p.chromium.name}.png')
        await browser.close()

asyncio.run(main())

Best Practice - use Chrome without Fingerprint Injection

To be completely undetected, use the following configuration:

playwright.chromium.launch_persistent_context(
    user_data_dir="...",
    channel="chrome",
    headless=False,
    no_viewport=True,
    # do NOT add custom browser headers or user_agent
    ...
)

[!NOTE]
We recommend using Google Chrome instead of Chromium. You can install it via patchright install chrome (or via any other installation method) and use it with channel="chrome".


Patches

Runtime.enable Leak

This is the biggest Patch Patchright uses. To avoid detection by this leak, patchright avoids using Runtime.enable by executing Javascript in (isolated) ExecutionContexts.

Console.enable Leak

Patchright patches this leak by disabling the Console API all together. This means, console functionality will not work in Patchright. If you really need the console, you might be better off using Javascript loggers, although they also can be easily detected.

Command Flags Leaks

Patchright tweaks the Playwright Default Args to avoid detection by Command Flag Leaks. This (most importantly) affects:

  • --disable-blink-features=AutomationControlled (added) to avoid navigator.webdriver detection.
  • --enable-automation (removed) to avoid navigator.webdriver detection.
  • --disable-popup-blocking (removed) to avoid popup crashing.
  • --disable-component-update (removed) to avoid detection as a Stealth Driver.
  • --disable-default-apps (removed) to enable default apps.
  • --disable-extensions (removed) to enable extensions

General Leaks

Patchright patches some general leaks in the Playwright codebase. This mainly includes poor setups and obvious detection points.

Closed Shadow Roots

Patchright is able to interact with elements in Closed Shadow Roots. Just use normal locators and Patchright will do the rest.
Patchright is now also able to use XPaths in Closed Shadow Roots.


Stealth

With the right setup, Patchright currently is considered undetectable. Patchright passes:


Documentation and API Reference

See the original Playwright Documentation and API Reference

Extended Patchright API

evaluate Method (Frame.evaluate, Page.evaluate, Locator.evaluate, Worker.evaluate, JSHandle.evaluate)

  • Added isolated_context to choose Execution Context (Main/Isolated). Bool (optional, Defaults to True)
object.evaluate(
    expression: str,
    arg: typing.Optional[typing.Any] = None,
    ...,
+   isolated_context: typing.Optional[bool] = True
)

evaluate_handle Method (Frame.evaluate_handle, Page.evaluate_handle, Locator.evaluate_handle, Worker.evaluate_handle, JSHandle.evaluate)

  • Added isolated_context to choose Execution Context (Main/Isolated). Bool (optional, Defaults to True)
object.evaluate_handle(
    expression: str,
    arg: typing.Optional[typing.Any] = None,
    ...,
+   isolated_context: typing.Optional[bool] = True
)

evaluate_all Method (Locator.evaluate_all)

  • Added isolated_context to choose Execution Context (Main/Isolated). Bool (optional, Defaults to True)
Locator.evaluate_all(
    expression: str,
    arg: typing.Optional[typing.Any] = None,
    ...,
+   isolated_context: typing.Optional[bool] = True
)

Bugs

The bugs are documented in the Patchright Driver Repository.


TODO

The TODO is documented in the Patchright Driver Repository.


Development

Deployment of new Patchright versions are automatic, but bugs due to Playwright codebase changes may occur. Fixes for these bugs might take a few days to be released.


Support our work

If you choose to support our work, please contact @vinyzu or @steve_abcdef on Discord.


Copyright and License

© Vinyzu

Patchright is licensed Apache 2.0


Disclaimer

This repository is provided for educational purposes only.
No warranties are provided regarding accuracy, completeness, or suitability for any purpose. Use at your own risk—the authors and maintainers assume no liability for any damages, legal issues, or warranty breaches resulting from use, modification, or distribution of this code.
Any misuse or legal violations are the sole responsibility of the user.


Authors

Active Maintainer: Vinyzu
Co-Maintainer: Kaliiiiiiiiii

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

phantomwright_driver-1.57.6-py3-none-win_arm64.whl (32.8 MB view details)

Uploaded Python 3Windows ARM64

phantomwright_driver-1.57.6-py3-none-win_amd64.whl (36.5 MB view details)

Uploaded Python 3Windows x86-64

phantomwright_driver-1.57.6-py3-none-win32.whl (36.5 MB view details)

Uploaded Python 3Windows x86

phantomwright_driver-1.57.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (45.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

phantomwright_driver-1.57.6-py3-none-macosx_11_0_universal2.whl (42.0 MB view details)

Uploaded Python 3macOS 11.0+ universal2 (ARM64, x86-64)

phantomwright_driver-1.57.6-py3-none-macosx_11_0_arm64.whl (40.8 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

phantomwright_driver-1.57.6-py3-none-macosx_10_13_x86_64.whl (42.0 MB view details)

Uploaded Python 3macOS 10.13+ x86-64

File details

Details for the file phantomwright_driver-1.57.6-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for phantomwright_driver-1.57.6-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 946f469ed894fac9985aeb6ba609388bb7bd2f1c2794ff14666663f7ebc43f75
MD5 db313bf3775da6eb52c622c1ab6721ee
BLAKE2b-256 27adddd68dfe4527a23212bfd8b7e29e42c99f4ab843384cbd0f268872124d9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for phantomwright_driver-1.57.6-py3-none-win_arm64.whl:

Publisher: patchright_release.yml on StudentWan/phantomwright-driver-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file phantomwright_driver-1.57.6-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for phantomwright_driver-1.57.6-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 87aaa4d5de0ff94691de34b163abad6dcf0d127e4f3b5822d1dc3b253c9b9793
MD5 3e6e1bf706accadf3053c63da5e88f77
BLAKE2b-256 132702122fe36cc3d359ec910cf28bad98fc26a91c65c50ae49be1ef2d1329a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for phantomwright_driver-1.57.6-py3-none-win_amd64.whl:

Publisher: patchright_release.yml on StudentWan/phantomwright-driver-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file phantomwright_driver-1.57.6-py3-none-win32.whl.

File metadata

File hashes

Hashes for phantomwright_driver-1.57.6-py3-none-win32.whl
Algorithm Hash digest
SHA256 476de33d6f0e7613952db9294e9f7f75a4396ad7941ceceab567f1cd3ca85ff5
MD5 cae7b5bf40497d22cefb7ef94aa7aab6
BLAKE2b-256 9f87208279f4dc31e5d7a8804385713ce75f1232374b5484523de1c06948f53a

See more details on using hashes here.

Provenance

The following attestation bundles were made for phantomwright_driver-1.57.6-py3-none-win32.whl:

Publisher: patchright_release.yml on StudentWan/phantomwright-driver-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file phantomwright_driver-1.57.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for phantomwright_driver-1.57.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1cc1aaa66dbac832b8da91613cd314d60014a86200254d04e709607865260a45
MD5 622399e1c3b9747beb64bfda8591d083
BLAKE2b-256 be5bb4e2b6e7fb220399e9ae63cc6fc2734c30c2100a0e178f99ca54e7b2752b

See more details on using hashes here.

Provenance

The following attestation bundles were made for phantomwright_driver-1.57.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: patchright_release.yml on StudentWan/phantomwright-driver-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file phantomwright_driver-1.57.6-py3-none-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for phantomwright_driver-1.57.6-py3-none-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 0e7cca22036b73c88e6f59b59ba780d8972ffebab13428c74ae040e6e00fb511
MD5 ecb6df232a28d404cee9f5bfca078c75
BLAKE2b-256 1a06fccea643e8e50af4891e1703a867cb085e823c7bd5b7ce1d4566a0ecd707

See more details on using hashes here.

Provenance

The following attestation bundles were made for phantomwright_driver-1.57.6-py3-none-manylinux1_x86_64.whl:

Publisher: patchright_release.yml on StudentWan/phantomwright-driver-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file phantomwright_driver-1.57.6-py3-none-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for phantomwright_driver-1.57.6-py3-none-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 3c7f437e616d45331cbd514fe97cc9d0fa19d3aa1a684a231fcfe573608641b4
MD5 c90c6de2a2d1bb2cb642a7f5ae3c5b43
BLAKE2b-256 42a446d289b710428319bfe87e632c85f34429b4dc5f73266ca73d3b90a58022

See more details on using hashes here.

Provenance

The following attestation bundles were made for phantomwright_driver-1.57.6-py3-none-macosx_11_0_universal2.whl:

Publisher: patchright_release.yml on StudentWan/phantomwright-driver-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file phantomwright_driver-1.57.6-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for phantomwright_driver-1.57.6-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7d07112276fdc6b67c81f472969b35d9165475cd86f7f829053a059f8867aba1
MD5 4f38aa935cb5372fa498f4c226370c47
BLAKE2b-256 a502172a5c686043695976382e6ddfd4dfd8f4bf7164905a2ce83d21bd0740c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for phantomwright_driver-1.57.6-py3-none-macosx_11_0_arm64.whl:

Publisher: patchright_release.yml on StudentWan/phantomwright-driver-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file phantomwright_driver-1.57.6-py3-none-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for phantomwright_driver-1.57.6-py3-none-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 af6144b08c0e7df4c13dc204e169c5a485236dea01e30766bcc021b9b75da991
MD5 90930cf9acf2e2ebb38f42cc31038655
BLAKE2b-256 99364d139356ac703ab238d2999ad7aa67b793a3055215a383beebbe005d529b

See more details on using hashes here.

Provenance

The following attestation bundles were made for phantomwright_driver-1.57.6-py3-none-macosx_10_13_x86_64.whl:

Publisher: patchright_release.yml on StudentWan/phantomwright-driver-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page