Entendendo Proxies na Automação Web
Os proxies atuam como agentes clandestinos da internet, mascarando seu endereço IP e permitindo que você navegue pelas fronteiras digitais com sutileza. No contexto da automação web — onde Selenium e Puppeteer se enfrentam no teatro do navegador — os proxies são indispensáveis para contornar limites de taxa, restrições geográficas e vigilância. Proxies gratuitos, embora instáveis e efêmeros, podem ser suficientes para cenários de teste ou extração de dados leves e não críticos.
Tipos de proxies e suas características
| Tipo de proxy | Nível de anonimato | Protocolos suportados | Caso de uso típico | Confiabilidade |
|---|---|---|---|---|
| HTTP | Baixo a médio | HTTP, HTTPS | Extração simples de dados da web | Baixo |
| SOCKS4/5 | Alto | SOCKS4, SOCKS5 | Protocolos complexos, HTTPS | Médio |
| Transparente | Nenhum (revela o IP) | HTTP, HTTPS | Armazenamento em cache, uso interno | Muito baixo |
| Elite/Anônimo | Alto | HTTP, HTTPS | Ignorando bloqueios geográficos | Médio |
Para uma lista completa de proxies gratuitos, consulte https://free-proxy-list.net/ ou https://www.sslproxies.org/.
Utilizando proxies gratuitos com Selenium (Python)
1. Instalando as dependências
pip instalar selênio
Baixe a versão mais recente. ChromeDriver Compatível com a sua versão do Chrome.
2. Configurando um proxy no Selenium
O navegador, essa marionete digital, pode ser comandado da seguinte forma:
from selenium import webdriver from selenium.webdriver.chrome.options import Options proxy = "186.121.235.66:8080" # Replace with your free proxy options = Options() options.add_argument(f'--proxy-server=http://{proxy}') driver = webdriver.Chrome(options=options) driver.get('https://httpbin.org/ip') print(driver.page_source) driver.quit()
Tabela: Alternadores de proxy comuns do Chrome
| Opção | Descrição |
|---|---|
--proxy-server=http://IP:PORT |
Configurar proxy HTTP |
--proxy-server=https=IP:PORT |
Configurar proxy HTTPS |
--proxy-bypass-list=localhost;127.0.0.1 |
Excluir endereços do proxy |
3. Utilizando Proxies com Autenticação
Proxies gratuitos com autenticação são raridades, mas caso você encontre um:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options # Proxies autenticados requerem uma solução alternativa com extensão do Chrome from selenium.webdriver.common.by import By import zipfile proxy_host = 'proxy.example.com' proxy_port = 8000 proxy_user = 'user' proxy_pass = 'pass' manifest_json = """ { "version": "1.0.0", "manifest_version": 2, "name": "Chrome Proxy", "permissions": [ "proxy", "tabs", "unlimitedStorage", "storage", " ", "webRequest", "webRequestBlocking" ], "background": { "scripts": ["background.js"] } } """ background_js = f""" var config = {{ mode: "fixed_servers", rules: {{ singleProxy: {{ scheme: "http", host: "{proxy_host}", port: parseInt({proxy_port}) }}, bypassList: ["localhost"] }} }}; chrome.proxy.settings.set({{value: config, scope: "regular"}}, function() {{}}); function callbackFn(details) {{ return {{ authCredentials: {{ username: "{proxy_user}", password: "{proxy_pass}" }} }}; }} chrome.webRequest.onAuthRequired.addListener( callbackFn, {{urls: [" "]}}, ['blocking'] ); """ # Crie o plugin de extensão de proxy pluginfile = 'proxy_auth_plugin.zip' com zipfile.ZipFile(pluginfile, 'w') as zp: zp.writestr("manifest.json", manifest_json) zp.writestr("background.js", background_js) chrome_options = Options() chrome_options.add_extension(pluginfile) driver = webdriver.Chrome(options=chrome_options) driver.get('https://httpbin.org/ip')
Referência: Autenticação de proxy Selenium (Gist do GitHub)
Utilizando proxies gratuitos com Puppeteer (Node.js)
1. Instalando o Puppeteer
npm instalar marionetista
2. Iniciando o Puppeteer com um proxy
Deixe o navegador exibir sua nova máscara:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ args: ['--proxy-server=http://186.121.235.66:8080'] }); const page = await browser.newPage(); await page.goto('https://httpbin.org/ip'); const body = await page.content(); console.log(body); await browser.close(); })();
3. Gerenciamento da autenticação de proxy
Quando o porteiro exige credenciais:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ args: ['--proxy-server=http://proxy.example.com:8000'] }); const page = await browser.newPage(); await page.authenticate({ username: 'user', password: 'pass' }); await page.goto('https://httpbin.org/ip'); const body = await page.content(); console.log(body); await browser.close(); })();
4. Rotacionando Proxies no Puppeteer
Um balé de identidades efêmeras, orquestrado da seguinte forma:
const proxies = [ 'http://proxy1:porta', 'http://proxy2:porta', 'http://proxy3:porta' ]; const puppeteer = require('puppeteer'); (async () => { for (const proxy of proxies) { const browser = await puppeteer.launch({ args: [`--proxy-server=${proxy}`] }); const page = await browser.newPage(); await page.goto('https://httpbin.org/ip'); const body = await page.content(); console.log(`Proxy: ${proxy}\n${body}\n`); await browser.close(); } })();
Fontes de proxy gratuitas
| Nome | URL | Características |
|---|---|---|
| Lista de Proxy Gratuita | https://free-proxy-list.net/ | Grande lista HTTP/S, atualizada. |
| Proxies SSL | https://www.sslproxies.org/ | Proxies HTTPS, atualização rápida |
| Raspagem de proxy | https://proxyscrape.com/free-proxy-list | Protocolos múltiplos |
| Espiões.um | http://spys.one/en/ | Filtragem avançada |
Melhores práticas e limitações
- Natureza Efêmera: Os proxies gratuitos costumam desaparecer sem aviso prévio; monitore a sua disponibilidade usando ferramentas como Verificador de Proxy.
- Velocidade e confiabilidade: Espere latência, tempos limite e, ocasionalmente, becos sem saída.
- Segurança: Nunca utilize proxies gratuitos para contas sensíveis — ataques do tipo "homem no meio" espreitam nas sombras.
- Considerações legais e éticas: Respeite sempre o arquivo robots.txt e os termos de serviço.
Exemplo de Validação de Proxy (Python)
Antes de abrir o navegador, teste a conexão do proxy:
import requests proxy = "186.121.235.66:8080" proxies = {"http": f"http://{proxy}", "https": f"http://{proxy}"} try: response = requests.get('https://httpbin.org/ip', proxies=proxies, timeout=5) print(response.json()) except Exception as e: print(f"Proxy falhou: {e}")
Comentários (0)
Ainda não há comentários aqui, você pode ser o primeiro!