para quem automatiza

Proxy autenticado no Playwright e no Selenium: o detalhe que trava

Num dos dois, credencial de proxy é um parâmetro. No outro, é um problema conhecido que trava a primeira navegação num diálogo que o seu código não consegue fechar. Vale saber qual é qual antes de escolher a ferramenta.

Playwright: é um parâmetro

No Playwright, proxy com usuário e senha é configuração declarada. A documentação oficial descreve um dicionário proxy com as chaves server, username e password, passado no launch:

# Playwright Python — proxy com autenticacao, no launch from playwright.sync_api import sync_playwright with sync_playwright() as p: navegador = p.chromium.launch(proxy={ "server": "http://srv.gtiproxy.com:PORTA_HTTP", "username": "USUARIO", "password": "SENHA", }) pagina = navegador.new_page() pagina.goto("https://ifconfig.me") print(pagina.inner_text("body")) navegador.close()

Três detalhes que economizam tempo: a credencial vai em chaves separadas, não embutida na URL do server. O Playwright também aceita proxy por contexto, em new_context, o que permite endereços diferentes na mesma execução — mas o exemplo oficial dessa forma mostra só o server, então confirme na sua versão se as credenciais são aceitas ali. E a documentação diz que o proxy pode ser HTTP(S) ou SOCKSv5, sem afirmar que a autenticação funciona em SOCKSv5 — teste antes de depender disso.

Selenium com Chrome: o --proxy-server ignora a credencial

Aqui está o problema que faz muita gente perder uma tarde. O Selenium não tem suporte nativo a autenticação de proxy, e a flag do Chrome não lê credenciais:

# isto NAO funciona: a credencial na URL e ignorada opcoes.add_argument("--proxy-server=http://USUARIO:[email protected]:PORTA")

O que acontece é que a primeira navegação para num 407 Proxy Authentication Required, com um diálogo nativo do navegador que o Selenium não consegue fechar — ele não é um elemento da página. O script fica pendurado até o timeout.

Existem três saídas, e cada uma tem um porém:

  • Extensão gerada em tempo de execução. É a abordagem mais comum: o script monta uma pequena extensão que injeta a credencial e a carrega no Chrome. Em Manifest V3 exige Chrome 105 ou superior, e há um detalhe cruel — o service worker da extensão pode ser suspenso quando ocioso, e aí o diálogo nativo volta a aparecer no meio da execução.
  • Selenium Wire. Aceita a credencial diretamente e cuida da autenticação. É a saída mais simples, com o custo de uma dependência a mais.
  • Trocar de ferramenta. O Playwright resolve isso por desenho, como no exemplo acima.

Sobre headless, as fontes se contradizem. Encontramos material afirmando que a abordagem de extensão não funciona com --headless=new, e outro listando justamente o contrário. Não confirmamos nenhum dos dois, então trate como ponto a testar na sua versão do Chrome em vez de fato assentado.

O teste que você deve fazer primeiro

Antes de culpar a biblioteca, confirme que a credencial funciona fora dela. Dois comandos separam problema de proxy de problema de código:

# HTTP curl -x http://USUARIO:[email protected]:PORTA_HTTP https://ifconfig.me # SOCKS5 — note que a porta e OUTRO numero curl -x socks5://USUARIO:[email protected]:PORTA_SOCKS5 https://ifconfig.me

Se os dois devolverem um IP brasileiro, a credencial está certa e o problema é de configuração da ferramenta. Se falharem, o problema é anterior — e o erro mais comum é trivial: as portas de HTTP e de SOCKS5 são números diferentes, e escrever um protocolo com a porta do outro falha sem mensagem clara.

O host da GTI Proxy é srv.gtiproxy.com para todos os planos; usuário, senha e as duas portas saem do painel. Mais ferramentas em como configurar o proxy, e o caso de raspagem em escala em proxy para web scraping.

Se o seu bloqueio não é de credencial e sim de captcha ou 403, o diagnóstico está em captcha e bloqueio.

perguntas frequentes

Perguntas frequentes

Como usar proxy com usuário e senha no Playwright?

Passando um dicionário proxy com as chaves server, username e password no launch do navegador. A credencial vai em chaves separadas, não embutida na URL do server. O Playwright também aceita proxy por contexto, em new_context, o que permite endereços diferentes na mesma execução — mas o exemplo oficial dessa forma mostra apenas o server, então confirme na sua versão se as credenciais são aceitas ali.

Por que o proxy com senha não funciona no Selenium com Chrome?

Porque o Selenium não tem suporte nativo a autenticação de proxy e a flag --proxy-server do Chrome ignora credenciais. A primeira navegação para num 407 Proxy Authentication Required, com um diálogo nativo do navegador que o Selenium não consegue fechar, já que não é um elemento da página. O script fica pendurado até o timeout.

Quais as saídas para autenticar proxy no Selenium?

Três. Gerar uma extensão em tempo de execução que injeta a credencial, que em Manifest V3 exige Chrome 105 ou superior e tem o risco de o service worker ser suspenso quando ocioso, fazendo o diálogo nativo reaparecer. Usar o Selenium Wire, que aceita a credencial diretamente, ao custo de uma dependência a mais. Ou trocar para o Playwright, que resolve isso por desenho.

Como testar a credencial do proxy antes de culpar o código?

Com dois comandos curl, um por protocolo: curl -x http://USUARIO:SENHA@host:PORTA_HTTP https://ifconfig.me e curl -x socks5://USUARIO:SENHA@host:PORTA_SOCKS5 https://ifconfig.me. Se os dois devolverem o IP esperado, a credencial está certa e o problema é de configuração da ferramenta. O erro mais comum é trivial: as portas de HTTP e de SOCKS5 são números diferentes, e usar um protocolo com a porta do outro falha sem mensagem clara.

IP brasileiro de verdade,
a partir de R$ 15.

Proxy móvel 4G/5G com IPs da TIM, Vivo ou Claro, e residencial de fibra óptica brasileira. Teste o residencial de graça por 15 minutos, sem cartão.

ativação em minutos · pagamento em Real · sem fidelidade
Falar com especialista Tire suas dúvidas no WhatsApp