O SeleniumBase foi projetado como um wrapper para executar instâncias do Selenium em um ambiente de teste. Dito isso, ele é muito mais do que apenas um wrapper. O SeleniumBase nos permite executar o Selenium usando um Proxy autenticado.
Problemas inerentes ao Proxy com o Selenium
O Selenium não tem um suporte muito bom para proxies. Embora você possa passar um argumento --proxy-server para o Selenium, não há suporte para proxies autenticados. Mas a situação piora. Durante anos, o SeleniumWire foi a opção preferida ao usar proxies com o Selenium. A integração era incrivelmente fácil. Infelizmente, o SeleniumWire foi descontinuado há mais de um ano e não recebe atualizações há mais de dois anos.

Introdução
Para começar, precisamos instalar o SeleniumBase e escrever um caso de teste. O caso de teste é o que realmente controla o Selenium e executa nossa instância do webdriver para nós.
Instalação
pip install seleniumbase
Escrevendo um caso de teste
Aqui está um caso de teste simples. O código abaixo faz uma solicitação à API IPinfo. Assim que recebemos nossa resposta JSON, nós a analisamos e imprimimos seu conteúdo no console.
from seleniumbase import BaseCase
from selenium.webdriver.common.by import By
import json
class ProxyTest(BaseCase):
def test_proxy(self):
#acesse o site
self.driver.get("https://ipinfo.io/json")
#carregar a resposta json
location_info = json.loads(self.driver.find_element(By.TAG_NAME, "body").text)
#iterar pelo dicionário e imprimir seu conteúdo
for k,v in location_info.items():
print(f"{k}: {v}")
Invocando o teste
Para realmente executar o código, precisamos executar o teste. Em vez de usar python nome_do_seu_script.py, vamos usar o pytest.
Sem Proxy
Se você deseja executar seu script de teste sem um Proxy, pode usar o comando abaixo.
pytest proxy_test.py -s
Você receberá uma resposta semelhante a esta.
=================================================== início da sessão de teste ===================================================
plataforma linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 item coletado
proxy_test.py ip: 23.28.108.255
hostname: d28-23-255-108.dim.wideopenwest.com
cidade: Westland
região: Michigan
país: EUA
localização: 42.3242,-83.4002
org: AS12083 WideOpenWest Finance LLC
CEP: 48185
fuso horário: America/Detroit
leia-me: https://ipinfo.io/missingauth.
==================================================== 1 aprovado em 1,01 s ====================================================
Configuração do Proxy
Para usar um Proxy, basta usar o sinalizador --proxy seguido da URL do nosso Proxy. Veja o formato abaixo.
--proxy=sua_url_de_proxy:sua_porta_de_proxy
Proxy gratuito
Aqui está um exemplo usando um Proxy gratuito. O endereço IP é 155.54.239.64 e estamos nos comunicando com ele na porta 80.
--Proxy=155.54.239.64:80
Proxy autenticado
Os proxies autenticados são tratados da mesma forma. Com um proxy autenticado, basta incluir seu nome de usuário e senha na URL.
Proxy=<SEU_NOME_DE_USUÁRIO>:<SUA_SENHA>@<URL_DO_PROXY>:<PORTA_DO_PROXY>
Melhores tipos e provedores de Proxy autenticado
Ao usar proxies autenticados com o Selenium, as melhores opções são Proxies residenciais, Proxies de datacenter e Proxy ISP, cada um oferecendo diferentes níveis de anonimato e confiabilidade. Os proxies residenciais oferecem as maiores taxas de sucesso ao usar IPs de usuários reais, tornando-os ideais para contornar a detecção de bots. Os proxies de datacenter são mais rápidos e econômicos, mas mais fáceis de detectar. Os proxies ISP combinam os benefícios de ambos, oferecendo velocidade com altos níveis de confiança.
Provedores recomendados:
- segmentação geográfica
- Proxy rotativo
Para scraping com SeleniumBase, os Proxies residenciais da Bright Data são a opção mais confiável, garantindo altas taxas de sucesso e bloqueios mínimos.
Executando com um Proxy
O exemplo abaixo está configurado para ser executado com um dos nossos proxies aqui na Bright Data. Certifique-se de substituir o nome de usuário, o nome da zona e a senha pelos seus próprios.
pytest proxy_test.py --proxy=brd-customer-<SEU-NOME-DE-USUÁRIO>-zone-<SEU-NOME-DE-ZONA>:<SUA-SENHA>@brd.superproxy.io:33335 -s
Quando o executamos, obtemos o seguinte resultado. Se você observar atentamente, verá que nossa localização mudou.
=================================================== início da sessão de teste ===================================================
plataforma linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 item coletado
proxy_test.py ip: 144.202.4.246
hostname: 144-202-4-246.lum-int.io
cidade: Piscataway
região: Nova Jersey
país: EUA
localização: 40.4993,-74.3990
org: AS20473 The Constant Company, LLC
CEP: 08854
fuso horário: America/New_York
leia-me: https://ipinfo.io/missingauth.
==================================================== 1 aprovado em 3,25 s ====================================================
Controlando sua localização
Com nossos Proxies, você pode até escolher sua localização. Você pode fazer isso usando a bandeira do país. Cada país tem um código de duas letras que você pode passar para o Proxy.
pytest proxy_test.py --proxy=brd-customer-<SEU-NOME-DE-USUÁRIO>-zone-<NOME-DA-SUA-ZONA>:<SUA-SENHA>[email protected]:33335 -s
Quando você usa es (Espanha) como código do país, você é encaminhado por um Proxy na Espanha. Você pode verificar isso na saída abaixo.
=================================================== início da sessão de teste ===================================================
plataforma linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 item coletado
proxy_test.py ip: 176.119.14.158
cidade: Paracuellos de Jarama
região: Madri
país: ES
localização: 40.5035,-3.5278
org: AS203020 HostRoyale Technologies Pvt Ltd
CEP: 28860
fuso horário: Europa/Madri
leia-me: https://ipinfo.io/missingauth.
==================================================== 1 aprovado em 3,98 s ====================================================
Você pode ver nossos documentos de geolocalização aqui.
Proxy rotativo
Com apenas o básico do Python, você pode criar um sistema de Proxy muito bom. No código abaixo, usamos um conjunto de códigos de países, mas eles podem ser facilmente substituídos por IPs de Proxy reais. countries contém nossa lista de códigos de países. Em seguida, iteramos por eles e executamos nosso teste de Proxy usando todos os quatro códigos de países.
us: Estados Unidoses: Espanhail: Israelgb: Grã-Bretanha
import subprocess
#lista de códigos de países
countries = [
"us",
"es",
"il",
"gb",
]
#itera pelos países e cria um comando shell para cada um
for country in countries:
comando = f"pytest proxy_test.py --proxy=brd-customer-<SEU-NOME-DE-USUÁRIO>-<NOME-DA-ZONA>-país-{país}:[email protected]:33335 -s"
#executar o comando shell
subprocess.run(comando, shell=True)
Você pode executar isso como um arquivo Python normal.
python rotate_proxies.py
Ao executar o código, você deve receber uma saída semelhante a esta.
(O Linux usa --headless por padrão. Para substituir, use --headed / --gui. Para o modo Xvfb, use --xvfb. Ou você pode ocultar essas informações usando --headless / --headless2 / --uc.)
=================================================== início da sessão de teste ===================================================
plataforma linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 item coletado
proxy_test.py ip: 164.90.142.33
cidade: Clifton
região: Nova Jersey
país: EUA
localização: 40.8344,-74.1377
org: AS14061 DigitalOcean, LLC
CEP: 07014
fuso horário: America/New_York
leia-me: https://ipinfo.io/missingauth.
==================================================== 1 aprovado em 3,84 s ====================================================
(O Linux usa --headless por padrão. Para substituir, use --headed / --gui. Para o modo Xvfb, use --xvfb. Ou você pode ocultar essas informações usando --headless / --headless2 / --uc.)
=================================================== início da sessão de teste ===================================================
plataforma linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
diretório raiz: /home/nultinator/clients/bright-data/seleniumbase-Proxies
plug-ins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 item coletado
proxy_test.py ip: 5.180.9.15
cidade: Madri
região: Madri
país: ES
localização: 40.4066,-3.6724
org: AS203020 HostRoyale Technologies Pvt Ltd
CEP: 28007
fuso horário: Europe/Madrid
leia-me: https://ipinfo.io/missingauth.
==================================================== 1 aprovado em 3,60 s ====================================================
(O Linux usa --headless por padrão. Para substituir, use --headed / --gui. Para o modo Xvfb, use --xvfb. Ou você pode ocultar essas informações usando --headless / --headless2 / --uc.)
=================================================== sessão de teste iniciada ===================================================
plataforma linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 item coletado
proxy_test.py ip: 64.79.233.151
cidade: Tel Aviv
região: Tel Aviv
país: IL
localização: 32.0809,34.7806
org: AS9009 M247 Europe SRL
fuso horário: Ásia/Jerusalém
leia-me: https://ipinfo.io/missingauth.
==================================================== 1 aprovado em 3,36 s ====================================================
(O Linux usa --headless por padrão. Para substituir, use --headed / --gui. Para o modo Xvfb, use --xvfb. Ou você pode ocultar essas informações usando --headless / --headless2 / --uc.)
=================================================== sessão de teste iniciada ===================================================
plataforma linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 item coletado
proxy_test.py ip: 185.37.3.107
cidade: Londres
região: Inglaterra
país: GB
localização: 51.5085,-0.1257
org: AS9009 M247 Europe SRL
CEP: E1W
fuso horário: Europa/Londres
leia-me: https://ipinfo.io/missingauth.
==================================================== 1 aprovado em 2,90 s ====================================================
Como você pode ver, com uma quantidade muito pequena de código, estamos controlando Proxies nos EUA, Espanha, Israel e Grã-Bretanha.
Conclusão
Ao fazer scraping de dados na web, o SeleniumBase abre recursos no Selenium que muitas pessoas consideram impossíveis. Ao longo deste guia, você aprendeu como configurar proxies, controlar sua geolocalização e até mesmo usar proxies rotativas. Essas ferramentas ajudarão você a superar a maioria dos mecanismos de bloqueio que surgirem em seu caminho.
Desbloqueie todo o potencial da coleta de dados baseada em Selenium com os serviços de Proxy líderes do setor da Bright Data. Comece hoje mesmo seu teste grátis e experimente uma coleta de dados confiável e sem interrupções em grande escala!