Resposta rápida
Como uso um proxy estático com Selenium e Chrome?
Para um proxy estático no Selenium com Chrome, não coloque o nome de usuário e a senha em --proxy-server: o Chrome aceita apenas um esquema, um host e uma porta ali. Use um dos dois métodos que funcionam. Autorize sua máquina na lista de IPs permitidos do proxy, ou execute um pequeno encaminhador local que adiciona o login para o Chrome. SteadyProxy opções de login: Usuário e senha, ou uma allowlist de IP (até 10 IPs). Atualizado em 19 de outubro de 2026.
Quais são os fatos principais?
| Chave do Chrome | --proxy-server=http://host:port, sem campo para login |
|---|---|
| Método 1 | Lista de IPs permitidos: até 10 IPs próprios conectam sem senha |
| Método 2 | Encaminhador local em 127.0.0.1:8899 adiciona o cabeçalho Proxy-Authorization |
| Evite | user:password dentro de --proxy-server; plug-ins de navegador de origem desconhecida |
| Verificar | Abra api.ipify.org no navegador controlado |
| Testado | Encaminhador passou requisições HTTPS e HTTP por um proxy de teste protegido por senha, 19 de outubro de 2026 |
Por que o Chrome rejeita credenciais na URL do proxy?
A chave --proxy-server do Chrome aceita um esquema, um host e uma porta. A documentação de configurações de rede do Chromium não mostra nome de usuário nem senha nesse formato. Quando um proxy pede login, uma pessoa veria uma caixa de entrada, mas um script controlado pelo Selenium não consegue preenchê-la de forma confiável. Então o login precisa acontecer fora do Chrome: ou o proxy confia no IP da sua máquina, ou um auxiliar na sua máquina envia o login pelo Chrome.
Como uso a lista de IPs permitidos com Selenium?
Este é o método mais simples. Descubra o IP público da sua máquina abrindo api.ipify.org sem o proxy. Adicione esse IP à lista de permitidos da sua conta SteadyProxy; você pode registrar até 10 IPs de origem. Depois passe apenas o host e a porta para o Chrome. O exemplo usa a porta HTTP; SOCKS5 funciona da mesma forma com socks5:// e a porta SOCKS5. Nosso guia de lista de IPs permitidos explica as duas direções da lista de permitidos.
"""Selenium + Chrome through a static proxy authorised by IP allowlist.
Install: python -m pip install selenium
Before running: add this machine's public IP to the allowlist of your account.
"""
import os
from selenium import webdriver
from selenium.webdriver.common.by import By
HOST = os.environ.get("PROXY_HOST", "gw.steadyproxy.com")
PORT = os.environ.get("PROXY_PORT", "7777")
options = webdriver.ChromeOptions()
# Host and port only: Chrome's --proxy-server switch has no field for a username or password
options.add_argument("--proxy-server=http://" + HOST + ":" + PORT)
driver = webdriver.Chrome(options=options)
try:
driver.get("https://api.ipify.org?format=json")
print("Exit IP:", driver.find_element(By.TAG_NAME, "body").text)
finally:
driver.quit()
Como um encaminhador local adiciona o login?
Um encaminhador local escuta em 127.0.0.1, recebe as requisições de proxy do Chrome sem login, adiciona o cabeçalho Proxy-Authorization e as repassa para seu proxy estático. Usa apenas a biblioteca padrão do Python. Trata HTTPS por túneis CONNECT e http:// simples com uma requisição por conexão. Mantenha-o vinculado a 127.0.0.1, para que nenhuma outra máquina use seu proxy por meio dele. Testamos em 19 de outubro de 2026 com curl sobre HTTPS e HTTP, por um proxy de teste que rejeita requisições sem o login correto.
"""Local forwarder: Chrome -> 127.0.0.1:8899 (no login) -> static proxy (with login).
It adds the Proxy-Authorization header for you. Keep it bound to 127.0.0.1.
Run: python local_forwarder.py (standard library only)
"""
import asyncio
import base64
import os
LISTEN_PORT = int(os.environ.get("LOCAL_PORT", "8899"))
UPSTREAM_HOST = os.environ.get("PROXY_HOST", "gw.steadyproxy.com")
UPSTREAM_PORT = int(os.environ.get("PROXY_PORT", "7777"))
CREDENTIALS = os.environ.get("PROXY_USER", "USERNAME") + ":" + os.environ.get("PROXY_PASS", "PASSWORD")
AUTH = "Proxy-Authorization: Basic " + base64.b64encode(CREDENTIALS.encode()).decode()
DROP = ("proxy-authorization:", "proxy-connection:", "connection:")
async def pipe(reader, writer):
try:
while data := await reader.read(65536):
writer.write(data)
await writer.drain()
except ConnectionError:
pass
finally:
writer.close()
async def handle(client_reader, client_writer):
try:
head = await client_reader.readuntil(b"\r\n\r\n")
except (asyncio.IncompleteReadError, asyncio.LimitOverrunError):
client_writer.close()
return
lines = head.decode("latin-1").split("\r\n")
headers = [h for h in lines[1:] if h and not h.lower().startswith(DROP)]
headers.append(AUTH)
if not lines[0].upper().startswith("CONNECT "):
headers.append("Connection: close") # plain http:// - one request per connection
try:
up_reader, up_writer = await asyncio.open_connection(UPSTREAM_HOST, UPSTREAM_PORT)
except OSError:
client_writer.write(b"HTTP/1.1 502 Bad Gateway\r\nContent-Length: 0\r\n\r\n")
client_writer.close()
return
up_writer.write(("\r\n".join([lines[0]] + headers) + "\r\n\r\n").encode("latin-1"))
await up_writer.drain()
await asyncio.gather(pipe(client_reader, up_writer), pipe(up_reader, client_writer))
async def main():
server = await asyncio.start_server(handle, "127.0.0.1", LISTEN_PORT)
print("Forwarding 127.0.0.1:%d -> %s:%d" % (LISTEN_PORT, UPSTREAM_HOST, UPSTREAM_PORT))
async with server:
await server.serve_forever()
if __name__ == "__main__":
asyncio.run(main())
Inicie o encaminhador em um terminal e depois execute o Selenium com o endereço local. O Chrome nunca vê a senha, e o login fica em variáveis de ambiente na sua máquina.
"""Selenium + Chrome through the local forwarder (username/password kept out of Chrome).
Start local_forwarder.py first, then run this file.
"""
from selenium import webdriver
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=http://127.0.0.1:8899")
driver = webdriver.Chrome(options=options)
try:
driver.get("https://api.ipify.org?format=json")
print("Exit IP:", driver.find_element(By.TAG_NAME, "body").text)
finally:
driver.quit()
Como executo vários IPs estáticos com Selenium?
Execute um encaminhador por IP na sua própria porta local, como 8899, 8900 e 8901, cada um com as credenciais daquele IP. Inicie um driver Chrome por porta. Com a lista de IPs permitidos, você dispensa os encaminhadores e passa o host e a porta de cada IP para seu próprio driver. Dê a cada driver seu próprio --user-data-dir se ele precisar manter cookies entre execuções. Verifique cada driver com api.ipify.org antes do trabalho real.
O mesmo problema existe com Firefox e Selenium?
Sim, de forma semelhante. O Firefox lê host e porta do proxy nas suas preferências, e um login de proxy HTTP aparece como um diálogo que a automação não consegue preencher de forma confiável. Os mesmos dois métodos funcionam: a lista de IPs permitidos, ou o encaminhador local com o proxy HTTP do Firefox definido para 127.0.0.1 e porta 8899. Para uma ferramenta de automação de navegador com login de proxy integrado, veja o guia do Playwright.
O que mais as pessoas perguntam sobre Selenium e proxies estáticos?
Posso escrever http://user:password@host:port em --proxy-server?
Não funciona de forma confiável. O formato documentado do Chrome para --proxy-server não tem lugar para login, então as credenciais não são usadas. As requisições então falham com um erro de autenticação de proxy ou mostram uma caixa de entrada. Use a lista de IPs permitidos ou o encaminhador local descrito nesta página.
Uma extensão do Chrome é uma boa forma de enviar o login do proxy?
Pode funcionar, mas adiciona código com permissões amplas ao navegador que você automatiza, e as regras de extensões mudam entre versões do Chrome. Os dois métodos aqui não têm peças móveis dentro do Chrome. Se usar uma extensão, escreva você mesmo ou faça auditoria, e mantenha-a fora de perfis usados para outros trabalhos.
O encaminhador local é seguro?
Ele escuta apenas em 127.0.0.1, então só programas na sua máquina podem usá-lo. Qualquer pessoa com acesso à sua máquina também poderia usá-lo, pois conseguiria ler suas variáveis de ambiente. Pare-o quando o trabalho terminar. Ele não registra nada por padrão; adicione logging apenas sem o cabeçalho Proxy-Authorization.
Como encontro o IP público para colocar na allowlist?
Na máquina que executa o Selenium, abra https://api.ipify.org sem o proxy. Esse é o endereço que o proxy vê. Se seu escritório ou servidor tem IP fixo, coloque-o na allowlist uma vez. Uma conexão residencial cujo IP muda não é adequada; use o forwarder com usuário e senha.
O Selenium Wire ou uma biblioteca semelhante resolve isso?
Algumas bibliotecas adicionam login de proxy ao Selenium executando seu próprio proxy de interceptação, parecido com o forwarder aqui. Verifique se a biblioteca ainda é mantida antes de depender dela. O forwarder desta página tem cerca de 60 linhas de Python de biblioteca padrão que você pode ler por completo.
Quantos IPs posso colocar na allowlist para máquinas Selenium?
Até 10 IPs de origem na sua conta SteadyProxy, o que cobre a maioria dos escritórios e frotas de servidores. Nossas opções de login são: Usuário e senha, ou uma allowlist de IP (até 10 IPs). Se você executa Selenium em mais máquinas, encaminhe-as por um servidor com IP fixo, ou use o forwarder com usuário e senha em cada máquina.
Quais fontes este guia usa? (3)
- Configurações de rede (formato --proxy-server) — The Chromium Projects (2026-10-19)
- streams asyncio — Python Software Foundation (2026-10-19)
- Selenium WebDriver: opções do Chrome — Selenium (2026-10-19)