En resumen: Pasa proxy con server, username y password a chromium.launch, o a browser.new_context para limitarlo a un contexto. Por HTTP, los tres motores se autentican con esos campos. Por SOCKS5, ninguno acepta usuario y contraseña: Playwright se niega a lanzar el navegador. Pon tu IP en la lista blanca del proxy y da solo el servidor socks5://.
Playwright controla Chromium, Firefox y WebKit con una sola API, y el proxy forma parte de cómo se crea un navegador o un contexto. Eso facilita usar varias direcciones en un mismo script, y es también donde está su único límite estricto: SOCKS5 con contraseña.
Proxy en Playwright con Python
El ejemplo de Python lanza Chromium con el proxy para todo el navegador; el ejemplo por contexto lo limita a un solo contexto. Cambiar de motor es cambiar chromium por firefox o webkit; el objeto proxy sigue siendo el mismo.
Autenticación de proxy en Playwright
Los tres motores responden al 407 del proxy con el usuario y la contraseña del objeto proxy cuando el proxy habla HTTP. Un proxy SOCKS5 no recibe esa respuesta de ninguno de ellos, y por eso el ejemplo de SOCKS5 no lleva credenciales y se basa en la lista blanca.
Proxy por página en Playwright, y bypass
No se puede asignar un proxy a una sola página. La unidad es el contexto: crea un contexto por dirección y abre dentro de él las páginas que deban compartir esa dirección. En Playwright los contextos son baratos, así que un script que comprueba una tienda desde tres países mantiene tres contextos, cada uno creado a partir de su propio pedido.
El objeto proxy también admite un campo bypass, una lista de hosts separados por comas a los que se debe llegar directamente. Úsalo para tus propios servicios internos o un servidor de pruebas local, de modo que solo el tráfico destinado al exterior salga por la dirección que pagas.