I've wasted a lot of time with connectivity issues between Python and Chromium.
Turns out playwright-python's WebSocket implementation is broken.
Released cdproxy to work around the issue. A Go binary that presents itself as a browser running with --remote-debugging-pipe proxying to a ws:// or wss:// URL chosen through the URL environment variable.
Install with:
GOBIN=/usr/local/bin go install github.com/pcarrier/cdproxy@latestthen replace:
from playwright.async_api import async_playwright
async with async_playwright() as p:
browser = await p.chromium.connect_over_cdp(url)with:
async with async_playwright() as p:
browser = await p.chromium.launch(
executable_path="/usr/local/bin/cdproxy",
env={"URL": url}
)It's a hack, but it gets the job done.