Como Usar Proxies Com o SeleniumBase

Configure o SeleniumBase com proxies autenticados para contornar restrições e aumentar o sucesso do seu scraping de dados.
8 min de leitura
How to Use Proxies With SeleniumBase blog image

SeleniumBase foi projetado como um wrapper para executar instâncias do Selenium em um ambiente de teste. Dito isso, é muito mais do que apenas um wrapper. O SeleniumBase nos permite executar o Selenium usando um proxy autenticado.

Problemas Inerentes de Proxy no Selenium

O Selenium não possui um suporte muito bom para proxies. Embora você possa passar um argumento --proxy-server no Selenium, não há suporte para proxies autenticados. Mas piora. Por anos, 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.

Descontinuação do SeleniumWire

Primeiros Passos

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 do IPinfo. Após recebermos a resposta JSON, nós a processamos 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):
        #go to the site
        self.driver.get("https://ipinfo.io/json")
      
        #load the json response
        location_info = json.loads(self.driver.find_element(By.TAG_NAME, "body").text)

        #iterate through the dict and print its contents
        for k,v in location_info.items():
            print(f"{k}: {v}")

Invocando o Teste

Para realmente executar o código, precisamos rodar o teste. Em vez de usar python nome_do_seu_script.py, vamos usar 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.

=================================================== test session starts ===================================================
platform 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
collected 1 item                                                                                                          

proxy_test.py ip: 23.28.108.255
hostname: d28-23-255-108.dim.wideopenwest.com
city: Westland
region: Michigan
country: US
loc: 42.3242,-83.4002
org: AS12083 WideOpenWest Finance LLC
postal: 48185
timezone: America/Detroit
readme: https://ipinfo.io/missingauth
.

==================================================== 1 passed in 1.01s ====================================================

Configuração do Proxy

Para usar um proxy, basta usar a flag --proxy seguida da URL do nosso proxy. Veja o formato abaixo.

--proxy=your_proxy_url:your_proxy_port

Proxy Gratuito

Aqui está um exemplo usando um proxy gratuito. O endereço IP é 155.54.239.64 e estamos nos comunicando com ele pela 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=<YOUR_USERNAME>:<YOUR_PASSWORD>@<PROXY_URL>:<PROXY_PORT>

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 proxies ISP, cada um oferecendo diferentes níveis de anonimato e confiabilidade. Os proxies residenciais oferecem as maiores taxas de sucesso por usarem 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
  • Proxies rotativos

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 rodar com um dos nossos proxies aqui na Bright Data. Certifique-se de substituir o nome de usuário, nome da zona e senha pelos seus próprios.

pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-zone-<YOUR-ZONE-NAME>:<YOUR-PASSWORD>@brd.superproxy.io:33335 -s

Quando o executamos, obtemos a seguinte saída. Se você observar de perto, verá que nossa localização mudou.

=================================================== test session starts ===================================================
platform 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
collected 1 item                                                                                                          

proxy_test.py ip: 144.202.4.246
hostname: 144-202-4-246.lum-int.io
city: Piscataway
region: New Jersey
country: US
loc: 40.4993,-74.3990
org: AS20473 The Constant Company, LLC
postal: 08854
timezone: America/New_York
readme: https://ipinfo.io/missingauth
.

==================================================== 1 passed in 3.25s ====================================================

Controlando Sua Localização

Com nossos proxies, você pode até escolher sua localização. Você pode fazer isso usando a flag country. Cada país possui um código de duas letras que você pode passar para o proxy.

pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-zone-<YOUR-ZONE-NAME>:<YOUR-PASSWORD>[email protected]:33335 -s

Quando você usa es (Espanha) como seu código de país, você é redirecionado através de um proxy na Espanha. Você pode verificar isso na saída abaixo.

=================================================== test session starts ===================================================
platform 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
collected 1 item                                                                                                          

proxy_test.py ip: 176.119.14.158
city: Paracuellos de Jarama
region: Madrid
country: ES
loc: 40.5035,-3.5278
org: AS203020 HostRoyale Technologies Pvt Ltd
postal: 28860
timezone: Europe/Madrid
readme: https://ipinfo.io/missingauth
.

==================================================== 1 passed in 3.98s ====================================================

Você pode ver nossa documentação de geolocalização aqui.

Proxies Rotativos

Com apenas o básico de Python, você pode criar um sistema de proxy bastante eficiente. No código abaixo, usamos um conjunto de códigos de país, mas estes podem facilmente ser substituídos por IPs de proxy reais. countries contém nossa lista de códigos de país. Em seguida, percorremos essa lista e executamos nosso teste de proxy usando os quatro códigos de país.

  • us: Estados Unidos
  • es: Espanha
  • il: Israel
  • gb: Grã-Bretanha
import subprocess

#list of country codes
countries = [
    "us",
    "es",
    "il",
    "gb",
]

#iterate through the countries and make a shell command for each one
for country in countries:
    command = f"pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-<YOUR-ZONE-NAME>-country-{country}:[email protected]:33335 -s"

    #run the shell command
    subprocess.run(command, shell=True)

Você pode executar isso como um arquivo Python comum.

python rotate_proxies.py

Ao executar o código, você deve receber uma saída semelhante a esta.

(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform 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
collected 1 item                                                                                                          

proxy_test.py ip: 164.90.142.33
city: Clifton
region: New Jersey
country: US
loc: 40.8344,-74.1377
org: AS14061 DigitalOcean, LLC
postal: 07014
timezone: America/New_York
readme: https://ipinfo.io/missingauth
.

==================================================== 1 passed in 3.84s ====================================================
(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform 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
collected 1 item                                                                                                          

proxy_test.py ip: 5.180.9.15
city: Madrid
region: Madrid
country: ES
loc: 40.4066,-3.6724
org: AS203020 HostRoyale Technologies Pvt Ltd
postal: 28007
timezone: Europe/Madrid
readme: https://ipinfo.io/missingauth
.

==================================================== 1 passed in 3.60s ====================================================
(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform 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
collected 1 item                                                                                                          

proxy_test.py ip: 64.79.233.151
city: Tel Aviv
region: Tel Aviv
country: IL
loc: 32.0809,34.7806
org: AS9009 M247 Europe SRL
timezone: Asia/Jerusalem
readme: https://ipinfo.io/missingauth
.

==================================================== 1 passed in 3.36s ====================================================
(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform 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
collected 1 item                                                                                                          

proxy_test.py ip: 185.37.3.107
city: London
region: England
country: GB
loc: 51.5085,-0.1257
org: AS9009 M247 Europe SRL
postal: E1W
timezone: Europe/London
readme: https://ipinfo.io/missingauth
.

==================================================== 1 passed in 2.90s ====================================================

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 da web, o SeleniumBase abre capacidades no Selenium que muitas pessoas consideram impossíveis. Ao longo deste guia, você aprendeu como configurar proxies, controlar sua geolocalização e até rotacionar proxies. Essas ferramentas ajudarão você a superar a maioria dos mecanismos de bloqueio que encontrar pelo caminho.

Libere todo o potencial do scraping baseado em Selenium com os serviços de proxy líderes do setor da Bright Data. Comece hoje mesmo e experimente uma coleta de dados em escala, contínua e confiável!