O SeleniumBase é um framework de testes construído em cima do Selenium e aceita proxies com credenciais. É exatamente o que o Selenium sozinho não consegue, e por isso o desvio compensa em qualquer trabalho de scraping.
O problema dos proxies no Selenium
O Selenium consegue definir um proxy, mas não se autenticar nele: o Chrome ignora usuário e senha no argumento --proxy-server e abre no lugar uma janela de login que o WebDriver não consegue preencher. A ferramenta que antes cobria essa lacuna, o SeleniumWire, está sem manutenção há bastante tempo e não é mais recomendada.
Primeiros passos
Instalação
pip install seleniumbaseUm caso de teste
O teste abaixo pede a informação em JSON do IPinfo e escreve o resultado no console: assim você vê na hora qual endereço aparece para fora.
from seleniumbase import BaseCase
from selenium.webdriver.common.by import By
import json
class ProxyTest(BaseCase):
def test_proxy(self):
# Abrir a página
self.driver.get("https://ipinfo.io/json")
# Ler a resposta JSON
location_info = json.loads(self.driver.find_element(By.TAG_NAME, "body").text)
# Imprimir o conteúdo
for k, v in location_info.items():
print(f"{k}: {v}")Executar o teste
A execução é feita com o pytest.
Sem proxy
pytest proxy_test.py -sNo console aparecem o seu próprio IP e a sua localização.
Com proxy
pytest proxy_test.py --proxy=USUARIO:SENHA@pr.proxynet.io:8000 -sUsuário, senha, nome de host e porta estão no seu painel da Proxynet. A saída fica parecida com esta:
=================================== test session starts ===================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
plugins: seleniumbase-4.34.6, rerunfailures-15.0, xdist-3.6.1
collected 1 item
proxy_test.py ip: 144.202.4.246
hostname: 144-202-4-246.pxnet.io
city: Piscataway
region: New Jersey
country: US
timezone: America/New_York
.
==================================== 1 passed in 3.25s ====================================O endereço mudou e nenhuma janela de login apareceu — é esse o objetivo todo.
Rotacionar proxies
Com o que o Python já traz você monta uma rotação simples. O script a seguir roda o mesmo teste uma vez por país:
import subprocess
USER = "USUARIO"
PASSWORD = "SENHA"
# Países de onde a requisição deve sair
countries = ["us", "br", "gb", "tr"]
for country in countries:
# Na Proxynet o país de destino vai dentro do nome de usuário
proxy = f"{USER}-country-{country}:{PASSWORD}@pr.proxynet.io:8000"
subprocess.run(f"pytest proxy_test.py --proxy={proxy} -s", shell=True)A forma exata de indicar o país está no seu painel e muda conforme o produto. Como resolver a mesma coisa dentro de um script, em vez de pela linha de comando, explicamos em Como rotacionar proxies em Python.
Conclusão
Com o SeleniumBase, um teste do Selenium sai por um proxy com autenticação, confere a localização visível e a troca entre execuções: três coisas que, só com o Selenium, dão bem mais trabalho.
Quais dos nossos produtos de proxy servem para isso:




