In short: Pass proxy with server, username and password to chromium.launch, or to browser.new_context to scope it to one context. Over HTTP, all three engines authenticate with those fields. Over SOCKS5 none of them accepts a username and password: Playwright refuses to launch. Put your IP on the proxy’s whitelist and give only the socks5:// server.
Playwright drives Chromium, Firefox and WebKit through one API, and the proxy is part of how a browser or a context is created. That makes it easy to run several addresses in one script, and it is also where its one hard limit sits: SOCKS5 with a password.
Playwright proxy in Python
The Python sample launches Chromium with the proxy for the whole browser; the per-context sample scopes it to one context instead. Switching the engine is changing chromium to firefox or webkit; the proxy object stays the same.
Playwright proxy authentication
The three engines answer the proxy’s 407 with the username and password from the proxy object when the proxy speaks HTTP. A SOCKS5 proxy gets no such answer from any of them, which is why the SOCKS5 sample carries no credentials and relies on the whitelist.
Playwright proxy per page, and bypass
A proxy cannot be attached to a single page. The unit is the context: create one context per address and open the pages that should share that address inside it. Contexts are cheap in Playwright, so a script that checks one storefront from three countries holds three contexts, each built from its own order.
The proxy object also takes a bypass field, a comma-separated list of hosts that should be reached directly. Use it for your own internal services or a local test server, so that only the traffic meant for the outside world leaves through the address you pay for.