No Selenium, o proxy é passado ao navegador por argumento — e é aí que mora o problema: o Chrome não aceita usuário e senha no --proxy-server. Com credencial no endereço, ele mostra a janela de login de proxy, que o Selenium não controla.
A solução estável é um proxy local sem senha: um pequeno programa na sua máquina recebe a conexão do navegador e a repassa ao proxy da ProxyBox já com usuário e senha. O navegador enxerga só 127.0.0.1, sem autenticação.
No painel, em Meus proxies, copie host, porta HTTP, usuário e senha.
Passo 1 — Suba o proxy local
Com o pacote pproxy, em Python:
pip install pproxy
pproxy -l http://127.0.0.1:8081 -r "http://p1.exemplo.com:8000#usuario:senha"
-lé o endereço local, sem senha, que o navegador vai usar.-ré o proxy remoto; a credencial vai depois do#.
Deixe esse terminal aberto. Confira em outro terminal:
curl -x http://127.0.0.1:8081 https://api.ipify.org
O IP mostrado deve ser o do seu proxy, não o da sua conexão.
Passo 2 — Chrome no Selenium
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=http://127.0.0.1:8081")
driver = webdriver.Chrome(options=options)
driver.get("https://api.ipify.org?format=json")
print(driver.find_element("tag name", "body").text)
driver.quit()
Passo 2 (alternativa) — Firefox no Selenium
from selenium import webdriver
options = webdriver.FirefoxOptions()
options.set_preference("network.proxy.type", 1)
options.set_preference("network.proxy.http", "127.0.0.1")
options.set_preference("network.proxy.http_port", 8081)
options.set_preference("network.proxy.ssl", "127.0.0.1")
options.set_preference("network.proxy.ssl_port", 8081)
driver = webdriver.Firefox(options=options)
driver.get("https://api.ipify.org?format=json")
print(driver.find_element("tag name", "body").text)
driver.quit()
Configure http e ssl: sem o ssl, os sites HTTPS saem pelo seu IP real.
Vários proxies ao mesmo tempo
Um proxy local por proxy remoto, cada um numa porta:
pproxy -l http://127.0.0.1:8081 -r "http://p1.exemplo.com:8000#usuario1:senha1"
pproxy -l http://127.0.0.1:8082 -r "http://p2.exemplo.com:8000#usuario2:senha2"
Cada navegador aponta para a sua porta. Assim cada instância sai por um IP.
E o selenium-wire?
O selenium-wire resolvia a autenticação por dentro do Python, mas o projeto foi arquivado e não recebe atualizações. Para projeto novo, prefira o proxy local acima ou o Playwright, que aceita usuário e senha direto na API — veja Playwright, Puppeteer e Scrapy.
Erros comuns
- Janela de login de proxy aparece e o script trava — a credencial está no
--proxy-server. Mova para o proxy local. ERR_PROXY_CONNECTION_FAILED— o proxy local não está rodando ou a porta está diferente. Veja ERR_PROXY_CONNECTION_FAILED.- O IP mostrado é o seu — no Firefox faltou a preferência
ssl; no Chrome, confira se o argumento foi aplicado nasoptionsusadas para criar o driver. - 407 no terminal do pproxy — a credencial depois do
#está errada. Veja erro 407.
Para requisições sem navegador, o caminho é mais simples: proxy em Python com requests e httpx.