Cambiar idioma
Español English Русский Deutsch Français Italiano Українська Tiếng Việt Türkçe Bahasa Indonesia हिन्दी 日本語 中文
Menú
Precios
Proxies
TIPOS DE PROXY
POR UBICACIÓN77 ubicaciones
Soluciones
Recursos

Cómo usar un proxy con Playwright

Dale a Playwright una dirección ISP estática, al lanzar el navegador o para un solo contexto de navegador. Los ejemplos se ejecutaron en Chromium, Firefox y WebKit contra un proxy local antes de publicarse.

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.

Configurar un proxy en Playwright

  1. Copia host, puerto, usuario y contraseña

    Desde Mis Proxies en el panel o desde el pedido en la API. Cada dirección viene con sus propios cuatro valores.

  2. Elige el alcance

    En launch, todo el navegador usa el proxy. En new_context, solo ese contexto, así que un mismo script puede ejecutar varios contextos a través de direcciones distintas.

  3. Pasa el objeto proxy

    {"server": "http://HOST:PORT", "username": "USERNAME", "password": "PASSWORD"}. Las credenciales van en sus propios campos, nunca dentro de la URL del servidor.

  4. ¿Vas a usar SOCKS5? Quita las credenciales

    Playwright no puede iniciar sesión en un proxy SOCKS5, así que cambia el pedido a SOCKS5, admite la IP de tu máquina con la llamada de lista blanca de las pestañas de código y deja solo socks5://HOST:PORT, con el puerto nuevo. Mientras hay una lista blanca establecida, el proxy solo admite las direcciones de la lista y el usuario y la contraseña dejan de funcionar para ese pedido; si envías una lista vacía, la lista blanca se desactiva y el inicio de sesión con contraseña vuelve a funcionar.

  5. Confirma la dirección de salida

    Abre una vez Cuál es mi IP en una página de ese navegador o contexto, antes de la ejecución real.

# pip install playwright && playwright install chromium
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={
        "server": "http://HOST:PORT",
        "username": "USERNAME",
        "password": "PASSWORD",
    })
    page = browser.new_page()
    page.goto("https://example.com/")
    print(page.title())
    browser.close()
// npm i playwright && npx playwright install chromium
const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch({
    proxy: {
      server: 'http://HOST:PORT',
      username: 'USERNAME',
      password: 'PASSWORD',
    },
  });
  const page = await browser.newPage();
  await page.goto('https://example.com/');
  console.log(await page.title());
  await browser.close();
})();
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    # The proxy belongs to this context only; another context can use
    # a different address, or none.
    context = browser.new_context(proxy={
        "server": "http://HOST:PORT",
        "username": "USERNAME",
        "password": "PASSWORD",
    })
    page = context.new_page()
    page.goto("https://example.com/")
    print(page.title())
    browser.close()
# Switch the proxy to SOCKS5 and put your machine's IP on its whitelist:
# Chromium cannot send a SOCKS5 username and password.
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={"server": "socks5://HOST:PORT"})
    page = browser.new_page()
    page.goto("https://example.com/")
    print(page.title())
    browser.close()
# Put the public IPv4 address your code runs from on the proxy's
# whitelist. Replaces the list; an empty list turns whitelisting off
# and the proxy falls back to username and password.
curl -X PUT "https://api.proxyjam.com/public/v1/orders/ORDER_ID/whitelist" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"whitelisted_ips": ["YOUR_IP"]}'

Código probado para Playwright

Ejecutado con Playwright 1.64 para Python y para Node. Los ejemplos HTTP envían usuario y contraseña y necesitan un pedido sin lista blanca establecida; el de SOCKS5 se basa en la lista blanca y necesita el proxy cambiado antes a SOCKS5, lo que da un puerto nuevo. Sustituye los valores en mayúsculas por los de tu pedido.

Documentación completa de la API

Qué acepta cada navegador de Playwright

Probado el 2026-10-22 con Playwright 1.64 para Python en macOS: cada motor se lanzó contra un proxy local que exigía contraseña y contra otro que admitía un cliente en la lista blanca. Rechazado significa que Playwright se detuvo al lanzar el navegador con un error.
HTTP con contraseñaSOCKS5 con contraseñaSOCKS5, con lista blanca
ChromiumFuncionaRechazado al lanzarFunciona
FirefoxFuncionaRechazado al lanzarFunciona
WebKitFuncionaRechazado al lanzarFunciona

Qué sale mal con los proxies en Playwright

Credenciales en la cadena del servidor

Playwright lee el usuario y la contraseña de sus propios campos. Si se escriben en la URL del servidor, no se envían en absoluto: en nuestra prueba, la primera navegación se quedó colgada hasta agotar el tiempo de espera, sin ningún mensaje que apuntara a las credenciales.

Una contraseña de SOCKS5

Todos los motores rechazan la autenticación SOCKS5, y el error llega al lanzar el navegador, antes de que se abra ninguna página. La solución no es otra biblioteca: pon en la lista blanca la IP desde la que se ejecuta tu script y quita las credenciales.

Esperar que new_page cambie la dirección

Las páginas comparten el proxy de su contexto, y los contextos comparten el del navegador salvo que tengan uno propio. Para usar dos direcciones a la vez, crea dos contextos, cada uno con su proxy.

Saltarse la comprobación de salida

Una errata en el puerto o un proxy que sigue en HTTP fallan de forma visible, pero un contexto creado sin el objeto proxy sale directamente y en silencio. Carga una página que devuelva la IP una vez por cada contexto que configures.

Cómo encaja la dirección en el modelo de Playwright

Un contexto, una dirección
Cada contexto de navegador puede llevar su propia IP estática, de su propio pedido
Inicio de sesión HTTP
Campos username y password, aceptados por Chromium, Firefox y WebKit
Inicio de sesión SOCKS5
Solo por dirección IPv4 en la lista blanca, establecida a través de la API o del MCP
Estabilidad
La IP sigue siendo la misma entre ejecuciones durante todo el periodo que pagaste

Siguientes pasos después de Playwright

Preguntas sobre proxies en Playwright

¿Cómo configuro un proxy con autenticación en Playwright?

Pasa un objeto con server, username y password, a launch o a new_context. Con un proxy HTTP, Chromium, Firefox y WebKit envían esas credenciales cuando el proxy las pide.

¿Puedo usar un proxy SOCKS5 con contraseña en Playwright?

No. Playwright se detiene al lanzar el navegador con un error que dice que el navegador no admite la autenticación de proxy SOCKS5, en los tres motores. Pon en la lista blanca la IP desde la que se ejecuta tu script y pasa solo el servidor socks5; nuestra lista blanca se aplica por SOCKS5 igual que por HTTP. SOCKS5

¿Cómo uso un proxy distinto para cada página?

Da a cada contexto de navegador su propio proxy y abre la página en ese contexto. Las páginas de un mismo contexto comparten siempre su proxy, así que tener un proxy por página significa un contexto por página.

¿La configuración es la misma en Python y en Node?

El mismo objeto con los mismos tres campos: Python lo escribe como diccionario y Node como literal de objeto. Los dos ejemplos de esta página se ejecutaron con Playwright 1.64.

¿Puedo usar el proxy para scraping?

Las pruebas de tus propias páginas por región, los controles de calidad, la verificación de anuncios, la investigación de precios y de mercado, el seguimiento SEO y la protección de marca se pueden hacer sin revisión previa según nuestra política de uso aceptable. Que los datos sean públicos no autoriza por sí solo a recopilarlos, los datos personales necesitan una base jurídica declarada, y la dirección no supera CAPTCHAs, detección de bots, límites de frecuencia ni bloqueos; la política prohíbe intentarlo. Política de Uso Aceptable

Los contextos y las direcciones estáticas se corresponden uno a uno: un contexto por mercado o por trabajo, y cada uno llega al destino desde la misma IP, sin cambios, en cada ejecución del script. Compra tantas direcciones como contextos ejecutes en la página de proxies ISP, compara los planes en la página de precios y descarga sin navegador con la guía de Python requests.

Fuentes