π Playwright for Python
This is a patch of the original playwright implementation for Python.
It currently passes for sure (tested on Win10):
- β [CloudFare]
- β [Bet365] (shape//F5 I think)
- [Others] Unknown/Not tested
Warnings:
- the Only chromium part for Playwright is patched.
- Google-Chrome installed (
channel="chrome"recommended, default)
execute in your shell console
pip install undetected-playwright-patchResolve "Permission Denied" error (click to expand)
On UNIX-based OS, you might run into the following errors
Permission denied: '...python3.**/site-packages/undetected_playwright/driver/playwright.sh' and
...python3.**/site-packages/undetected_playwright/driver/node: Permission denied To resolve them, simply run
chmod +x <The path your terminal tells you>.sh # so smth like: ...python3.**/site-packages/undetected_playwright/driver/playwright.shand
chmod +x <The path your terminal tells you for node> # so smth like: ...python3.**/site-packages/undetected_playwright/driver/node git clone https://github.com/kaliiiiiiiiii/undetected-playwright-python cd undetected-playwright-python python -m pip install -r local-requirements.txt python build_patched.py import asyncio # undetected-playwright here! from undetected_playwright.async_api import async_playwright, Playwright async def run(playwright: Playwright): args = [] # disable navigator.webdriver:true flag args.append("--disable-blink-features=AutomationControlled") browser = await playwright.chromium.launch(headless=False, args=args) page = await browser.new_page() await page.goto("https://nowsecure.nl/#relax") input("Press ENTER to continue to Creep-JS:") await page.goto("https://nowsecure.nl/#relax") await page.goto("https://abrahamjuliot.github.io/creepjs/") input("Press ENTER to exit:") await browser.close() async def main(): async with async_playwright() as playwright: await run(playwright) if __name__ == "__main__": loop = asyncio.ProactorEventLoop() loop.run_until_complete(main()) # asyncio.run(main) # should work for non-Windows as well# undetected-playwright here! from undetected_playwright.sync_api import sync_playwright with sync_playwright() as p: args = [] # disable navigator.webdriver:true flag args.append("--disable-blink-features=AutomationControlled") browser = p.chromium.launch(args=args, headless=False) page = browser.new_page() page.goto("https://nowsecure.nl/#relax") input("Press ENTER to continue to Creep-JS:") page.goto("https://nowsecure.nl/#relax") page.goto("https://abrahamjuliot.github.io/creepjs/") input("Press ENTER to exit:") browser.close()See the original https://playwright.dev/python/docs/intro
https://playwright.dev/python/docs/api/class-playwright
-
Runtime.enable- remove Runtime.enable occurences
- patch _context(world) getter
- isolatedWorld (utility)
- main world (main)
- reset on frame-reload//navigation
- add GitHub runner to build releases automated

