Resposta rápida
Como configuro um proxy estático no Playwright?
Para um proxy estático no Playwright, passe um proxy com servidor, nome de usuário e senha para chromium.launch(), ou dê a cada contexto de navegador seu próprio proxy para usar vários IPs estáticos em um único navegador. Depois, abra api.ipify.org para verificar o IP de saída. Os IPs estáticos SteadyProxy são alugados por 30 dias, a partir de US$ 2,24 por IP em outubro de 2026, sem KYC e com pagamento em cripto.
Quais são os fatos principais?
| Opção de lançamento | proxy = servidor, nome de usuário, senha (login de proxy HTTP) |
|---|---|
| Por contexto | browser.newContext({ proxy }) dá a cada contexto seu próprio IP estático |
| SOCKS5 | Suportado pelo Playwright; a documentação descreve usuário e senha para proxies HTTP(S), então combine SOCKS5 com a lista de permissões de IP |
| Autenticação SteadyProxy | Usuário e senha, ou uma allowlist de IP (até 10 IPs) |
| Verificar | api.ipify.org para o IP de saída, ipinfo.io/json para a rede |
| Verificações de código | Python passou no py_compile e Node.js passou no node --check em 19 de outubro de 2026 (Playwright 1.60) |
Como defino um proxy estático no Playwright para Python?
Informe o proxy na inicialização quando o navegador inteiro deve usar um único IP estático. O server é o endereço HTTP do seu IP, http://host:port; o usuário e a senha vão em seus próprios campos, não na URL. O Playwright responde à solicitação de login do proxy por você, então nenhuma caixa de login aparece. O exemplo abre api.ipify.org, depois ipinfo.io/json, e imprime ambos.
"""Playwright (Python) through one static proxy.
Install: python -m pip install playwright && python -m playwright install chromium
"""
import os
from playwright.sync_api import sync_playwright
PROXY = {
"server": "http://" + os.environ.get("PROXY_HOST", "gw.steadyproxy.com") + ":"
+ os.environ.get("PROXY_PORT", "7777"),
"username": os.environ.get("PROXY_USER", "USERNAME"),
"password": os.environ.get("PROXY_PASS", "PASSWORD"),
}
with sync_playwright() as p:
browser = p.chromium.launch(proxy=PROXY)
context = browser.new_context()
page = context.new_page()
page.goto("https://api.ipify.org?format=json", timeout=30000)
print("Exit IP:", page.inner_text("body"))
page.goto("https://ipinfo.io/json", timeout=30000)
print("Network:", page.inner_text("body"))
browser.close()
Como uso vários IPs estáticos em um único navegador Playwright?
Crie um contexto de navegador por IP. A documentação do Playwright afirma que um proxy pode ser definido para o navegador inteiro ou para cada contexto de navegador individualmente. Contextos não compartilham cookies nem armazenamento, então cada um age como um perfil separado em seu próprio IP. O exemplo Node.js percorre dois IPs, abre api.ipify.org em cada contexto e fecha o contexto após o uso. Preencha a lista com o host, a porta, o usuário e a senha de cada IP do seu painel.
// Playwright (Node.js): one browser, one context per static IP.
// Install: npm i playwright && npx playwright install chromium
import { chromium } from 'playwright';
// Copy host, port, username and password of each IP from your dashboard.
const staticIps = [
{ name: 'client-a', host: 'gw.steadyproxy.com', port: '7777', username: 'USERNAME', password: 'PASSWORD' },
{ name: 'client-b', host: 'gw.steadyproxy.com', port: '7777', username: 'USERNAME', password: 'PASSWORD' },
];
const browser = await chromium.launch();
try {
for (const ip of staticIps) {
const context = await browser.newContext({
proxy: { server: `http://${ip.host}:${ip.port}`, username: ip.username, password: ip.password },
});
const page = await context.newPage();
await page.goto('https://api.ipify.org?format=json', { timeout: 30000 });
console.log(ip.name, await page.innerText('body'));
await context.close();
}
} finally {
await browser.close();
}
Devo usar HTTP ou SOCKS5 no Playwright?
Use a porta HTTP com usuário e senha na maioria dos casos. É a combinação que a documentação do Playwright descreve para login de proxy, e páginas HTTPS passam por um túnel CONNECT. Use SOCKS5 com um server socks5:// apenas quando sua máquina estiver na lista de permissões de IP, para que nenhum login seja necessário. Ambas as portas de um mesmo IP estático dão o mesmo IP de saída. SteadyProxy suporta HTTP, HTTPS (CONNECT) e SOCKS5.
Como mantenho os logins entre execuções no mesmo IP estático?
Salve o storage state do contexto após fazer login e carregue-o na próxima vez com o mesmo proxy. Em Python, context.storage_state(path='client-a.json') grava cookies e local storage; browser.new_context(storage_state='client-a.json', proxy=...) os restaura. Mantenha um arquivo de estado por IP e por conta, e nunca carregue o estado de uma conta no IP de outra conta. Trate esses arquivos como segredos.
O que dá errado com mais frequência?
Quatro erros cobrem a maioria dos casos. ERR_PROXY_CONNECTION_FAILED significa que o host ou a porta estão errados ou bloqueados do seu lado. Uma resposta 407 significa login errado, ou IP de origem ausente da sua lista de permissões. ERR_TUNNEL_CONNECTION_FAILED significa que o proxy recusou o destino; verifique a lista de bloqueados: Sites de bancos, órgãos governamentais, portais de pagamento e de ingressos, além das portas SMTP (envio de e-mail) 25, 465 e 587. Um timeout em todas as páginas aponta para uma falha no IP; teste com curl e depois contate o suporte.
O que mais as pessoas perguntam sobre Playwright e proxies estáticos?
Posso colocar o usuário e a senha na URL do server?
Use os campos separados de usuário e senha em vez disso. Eles são a forma documentada de fazer login em um proxy HTTP no Playwright e evitam problemas de codificação de URL com caracteres especiais. O campo server então contém apenas o esquema, o host e a porta do seu IP estático.
Cada página do Playwright recebe seu próprio IP?
Não. As páginas herdam o proxy do seu contexto, e os contextos herdam o proxy do navegador a menos que definam o próprio. Todas as páginas de um contexto compartilham um único IP estático. Para vários IPs, crie vários contextos, como no exemplo Node.js, ou vários navegadores.
Posso usar Firefox ou WebKit com um proxy estático no Playwright?
Sim. A opção proxy tem o mesmo formato para inicializações chromium, firefox e webkit. Teste cada engine com api.ipify.org, porque os engines diferem na forma como tratam alguns erros de proxy. Para QA entre engines, mantenha o mesmo IP estático para cada engine para que os resultados permaneçam comparáveis.
Devo definir o locale e o fuso horário para corresponder ao IP?
Para QA local e testes de geolocalização, sim: browser.new_context(locale='de-DE', timezone_id='Europe/Berlin') faz seu site renderizar como renderizaria para um visitante local. Isso muda o que seu navegador de teste solicita, não o IP, que ainda decide o país que seu site detecta. Veja QA de geolocalização para planos de teste.
Como verifico que cada contexto usa o IP correto?
Abra api.ipify.org primeiro em cada novo contexto e compare a resposta com a lista de IPs do seu painel. Faça a execução falhar se não corresponder. O custo é uma requisição leve por contexto, e isso evita que uma execução inteira saia pelo IP errado.
Quanto custa rodar 10 contextos do Playwright em 10 IPs estáticos?
Em outubro de 2026, 10 IPs ISP custam US$ 20,86 e 10 IPs datacenter dedicados custam US$ 12,69, cada um por 30 dias. A cobrança é por IP, não por GB. O pagamento é em cripto, sem KYC. Veja preços para todos os tamanhos de plano.
Quais fontes este guia usa? (3)
- Rede: proxy HTTP (Python) — Playwright (2026-10-19)
- Rede: proxy HTTP (Node.js) — Playwright (2026-10-19)
- API do ipify — ipify (2026-10-19)