Como Rotacionar Proxies em Python

Expert Network Defense Engineer
Introdução
Rotacionar proxies em Python garante web scraping e automação estáveis e confiáveis. Usar um único IP pode resultar em bloqueios e limites de taxa. Este guia cobre 10 métodos práticos para rotacionar proxies de forma eficaz. Para uma solução mais rápida e simples, considere usar Scrapeless, que gerencia a rotação de proxies automaticamente.
1. Usando uma Lista de Proxies Manualmente
Conclusão: Alternar manualmente os proxies de uma lista ajuda a evitar detecções.
Passos:
- Prepare uma lista de proxies (
proxies = ["http://ip:porta", ...]
). - Use
random.choice(proxies)
para selecionar um proxy para cada solicitação. - Passe o proxy para
requests
ouhttpx
:
python
import requests, random
proxies = ["http://111.111.111.111:8080", "http://222.222.222.222:8080"]
proxy = random.choice(proxies)
response = requests.get("https://example.com", proxies={"http": proxy, "https": proxy})
print(response.text)
Aplicação: Scraping em pequena escala ou testes em múltiplos endpoints sem bans.
2. Usando Rotação de Proxy com Sessão do Requests
Conclusão: Um objeto de sessão permite uso consistente de proxies em múltiplas solicitações.
Passos:
- Crie uma
requests.Session()
. - Atribua um proxy da sua lista para cada sessão.
python
import requests, random
session = requests.Session()
proxies = ["http://111.111.111.111:8080", "http://222.222.222.222:8080"]
session.proxies.update({"http": random.choice(proxies), "https": random.choice(proxies)})
response = session.get("https://example.com")
print(response.status_code)
Aplicação: Ao fazer scraping de páginas que requerem sessões persistentes.
3. Usando Bibliotecas de Proxy de Terceiros
Conclusão: Bibliotecas como requests-ip-rotator
simplificam a rotação de proxies.
Passos:
python
# Exemplo com requests-ip-rotator
from requests_ip_rotator import ApiGatewaySession
session = ApiGatewaySession("https://example.com")
response = session.get("https://example.com")
print(response.text)
Aplicação: Melhor para APIs ou solicitações frequentes que requerem rotação de IP.
4. Rotacionando Proxies Usando Tor
Conclusão: O Tor fornece rotação gratuita de proxies através de circuitos.
Passos:
- Instale o Tor (
sudo apt install tor
) e a biblioteca Pythonstem
. - Conecte-se através do proxy SOCKS do Tor (
127.0.0.1:9050
). - Troque o IP com comandos do Tor.
python
import requests
proxies = {"http": "socks5h://127.0.0.1:9050", "https": "socks5h://127.0.0.1:9050"}
response = requests.get("https://example.com", proxies=proxies)
print(response.text)
Aplicação: Scraping de dados anônimos sem pagar por proxies.
5. Usando Provedores de Proxy Rotativos
Conclusão: Provedores pagos garantem alta confiabilidade e velocidade.
Passos:
- Assine um serviço como Luminati, ScraperAPI ou Scrapeless.
- Use seus endpoints com autenticação.
- Rotacione proxies automaticamente para cada solicitação.
python
import requests
api_key = "SUA_CHAVE_API"
url = f"http://proxyprovider.com?api_key={api_key}&url=https://example.com"
response = requests.get(url)
print(response.text)
Aplicação: Projetos de scraping em larga escala com tempo de inatividade mínimo.
6. Rotação de Proxy no Selenium
Conclusão: A automação web requer rotação de proxies para evitar bans de IP.
Passos:
python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import random
proxies = ["111.111.111.111:8080", "222.222.222.222:8080"]
chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={random.choice(proxies)}')
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://example.com")
Aplicação: Navegação automatizada e testes com múltiplos IPs.
7. Rotacionando Proxies no Scrapy
Conclusão: O Scrapy suporta middleware para rotação de proxies.
Passos:
- Ative
HttpProxyMiddleware
. - Defina uma lista de proxies em
settings.py
. - Use o middleware para rotacionar por solicitação.
python
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 1,
}
PROXY_LIST = ['http://111.111.111.111:8080', 'http://222.222.222.222:8080']
Aplicação: Scraping em larga escala com aranhas do Scrapy.
8. Usando Rotação Assíncrona de Proxy com httpx
Conclusão: Bibliotecas assíncronas permitem solicitações concorrentes com múltiplos proxies.
python
import httpx, asyncio, random
proxies = ["http://111.111.111.111:8080", "http://222.222.222.222:8080"]
async def fetch(url):
proxy = random.choice(proxies)
async with httpx.AsyncClient(proxies={"http": proxy, "https": proxy}) as client:
response = await client.get(url)
print(response.status_code)
asyncio.run(fetch("https://example.com"))
Aplicação: Scraping em alta velocidade para múltiplas URLs.
9. Rotação Automática de Proxy com Scrapeless
Conclusão: O Scrapeless gerencia a rotação de proxies automaticamente, simplificando o desenvolvimento.
Benefícios:
- Sem gerenciamento manual da lista de proxies.
- Integrado com scripts de raspagem em Python
- Suporta alta concorrência e confiabilidade
Aplicação: Ideal tanto para iniciantes quanto para profissionais que buscam eficiência.
10. Proxies Rotativos com Variáveis de Ambiente
Conclusão: Altere dinamicamente a configuração do proxy usando variáveis de ambiente.
Passos:
- Armazene proxies no arquivo
.env
. - Carregue e selecione aleatoriamente proxies nos scripts.
python
import os, random
from dotenv import load_dotenv
import requests
load_dotenv()
proxies = os.getenv("PROXIES").split(",")
proxy = random.choice(proxies)
response = requests.get("https://example.com", proxies={"http": proxy, "https": proxy})
Aplicação: Útil para pipelines de raspagem configuráveis.
Resumo da Comparação
Método | Facilidade de Uso | Custo | Escalabilidade | Melhor Caso de Uso |
---|---|---|---|---|
Lista Manual | Fácil | Grátis | Baixa | Pequenos projetos |
Sessão de Requests | Fácil | Grátis | Média | Sessões persistentes |
Bibliotecas de Proxy | Média | Grátis/Pago | Média | Chamadas de API |
Tor | Média | Grátis | Baixa | Raspagem anônima |
Provedores Pagos | Fácil | Pago | Alta | Raspagem em larga escala |
Selenium | Média | Grátis/Pago | Média | Tarefas de automação |
Scrapy | Média | Grátis | Alta | Grandes projetos com aranha |
Async httpx | Difícil | Grátis | Alta | Alta concorrência |
Scrapeless | Muito Fácil | Pago | Alta | Solução tudo-em-um |
Variáveis de Ambiente | Média | Grátis | Média | Pipelines configuráveis |
Principais Conclusões
- Proxies rotativos são essenciais para evitar bloqueios e manter a estabilidade da raspagem.
- Python suporta muitos métodos, desde listas manuais até soluções assíncronas e pagas.
- Scrapeless oferece o método de rotação mais fácil e mais confiável.
Perguntas Frequentes
Q1: Por que devo rotacionar proxies em Python?
Para evitar bans de IP, limites de taxa e garantir uma raspagem confiável.
Q2: Posso usar proxies gratuitos para rotação?
Sim, mas a confiabilidade e a velocidade podem ser baixas. Serviços pagos são recomendados para grandes projetos.
Q3: O Scrapeless requer codificação?
Codificação mínima é necessária; ele se integra perfeitamente com scripts em Python.
Q4: Posso rotacionar proxies no Selenium?
Sim, configurando as opções do navegador com diferentes servidores proxy.
Q5: Com que frequência devo rotacionar proxies?
Depende do volume de solicitações e das políticas do site-alvo.
Solução Recomendada
Para uma experiência sem complicações, experimente Scrapeless para lidar automaticamente com a rotação de proxies e se concentrar na coleta de dados em vez da gestão manual.
Referências
Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.