Compreendendo a rotação de proxy
Na delicada dança da extração de dados da web e das requisições automatizadas, a rotação de proxies funciona como escudo e espada. Ela oculta seu rastro digital, garantindo que as requisições não revelem sua origem para servidores vigilantes. A rotação de proxies alterna entre uma lista selecionada de servidores proxy, permitindo que cada requisição pareça vir de uma fonte diferente — evitando bloqueios, limites de requisição e o olhar atento dos mecanismos anti-bot.
Principais estratégias de rotação de procurações
| Estratégia | Descrição | Caso de uso | Complexidade |
|---|---|---|---|
| Round Robin | Percorre sequencialmente os proxies em ordem | Raspagem geral, alvos de baixa suspeita | Baixo |
| Seleção aleatória | Seleciona aleatoriamente um proxy do conjunto para cada solicitação. | Evitar padrões detectáveis | Médio |
| Escolha adaptativa/inteligente | Seleciona proxies com base na integridade, velocidade ou histórico de banimentos. | Raspagem em larga escala e de alta sensibilidade | Alto |
Preparando a lista de procuradores
Uma lista de proxies é essencial para a rotação de servidores. Ela pode ser obtida de provedores pagos, como... Dados brilhantes, Oxilabs, ou agregadores gratuitos como Lista de Proxy Gratuita.
Tabela: Exemplos de formato de lista de procuradores
| Formatar | Exemplo |
|---|---|
| IP:Port | 51.158.68.68:8811 |
| IP:Porta:Usuário:Senha | 51.158.68.68:8811:nome de usuário:senha |
Armazene seus proxies em um arquivo de texto simples (por exemplo, proxies.txt) com um proxy por linha, uma prática elegante e prática.
Implementando Rotação de Proxy em Python
1. Lendo a Lista de Proxies
def load_proxies(filename): with open(filename, 'r') as f: return [line.strip() for line in f if line.strip()]
2. Rotação de Proxy Round Robin
import itertools proxies = load_proxies('proxies.txt') proxy_pool = itertools.cycle(proxies) def get_next_proxy(): return next(proxy_pool)
Cada chamada para obter_próximo_proxy() Oferece o próximo proxy em um ciclo contínuo e perfeito — uma homenagem à graça ordenada de uma valsa parisiense.
3. Integração com solicitações
Para requisições HTTP, o pedidos A biblioteca é robusta e acessível.
import requests def format_proxy(proxy): parts = proxy.split(':') if len(parts) == 2: return {'http': f'http://{proxy}', 'https': f'https://{proxy}'} elif len(parts) == 4: ip, port, user, pwd = parts proxy_auth = f"{user}:{pwd}@{ip}:{port}" return {'http': f'http://{proxy_auth}', 'https': f'https://{proxy_auth}'} else: raise ValueError("Formato de proxy inválido") url = "https://httpbin.org/ip" proxy = get_next_proxy() proxies_dict = format_proxy(proxy) response = requests.get(url, proxies=proxies_dict, timeout=10) print(response.json())
Rotação de proxy com requests-HTML e Selenium
Algumas páginas da web, tão elusivas quanto as madeleines proustianas, exigem a renderização de JavaScript. Para essas, ferramentas como Solicitações-HTML ou Selênio são indispensáveis.
Exemplo de Requests-HTML:
from requests_html import HTMLSession session = HTMLSession() proxy = get_next_proxy() proxies_dict = format_proxy(proxy) r = session.get('https://httpbin.org/ip', proxies=proxies_dict) print(r.html.text)
Exemplo de selênio:
O Selenium requer configuração de proxy no nível do driver.
from selenium import webdriver from selenium.webdriver.common.proxy import Proxy, ProxyType def configure_selenium_proxy(proxy): ip, port = proxy.split(':')[:2] selenium_proxy = Proxy() selenium_proxy.proxy_type = ProxyType.MANUAL selenium_proxy.http_proxy = f"{ip}:{port}" selenium_proxy.ssl_proxy = f"{ip}:{port}" return selenium_proxy proxy = get_next_proxy() chrome_options = webdriver.ChromeOptions() selenium_proxy = configure_selenium_proxy(proxy) capabilities = webdriver.DesiredCapabilities.CHROME.copy() selenium_proxy.add_to_capabilities(capabilities) driver = webdriver.Chrome(options=chrome_options, desired_capabilities=capabilities) driver.get('https://httpbin.org/ip')
Gerenciando a integridade e o failover do proxy
Um script elegante se adapta rapidamente às adversidades. Proxies podem expirar, entrar em listas negras ou apresentar baixa latência. Portanto, monitore a integridade deles e remova ou reduza a prioridade daqueles que apresentarem problemas.
def verificar_proxy(proxy): tente: dicionário_de_proxies = format_proxy(proxy) resp = requests.get('https://httpbin.org/ip', proxies=dicionário_de_proxies, timeout=5) retorne resp.status_code == 200 exceto Exception: retorne False proxies_saudáveis = [p para p em proxies se verificar_proxy(p)]
Para verificações de integridade mais sofisticadas e failover automático, considere bibliotecas como proxies rotativos e fragmentados.
Utilizando bibliotecas de terceiros
Para uma orquestração mais grandiosa, bibliotecas de terceiros oferecem uma sinfonia de recursos:
| Biblioteca | Características | Documentação |
|---|---|---|
| proxies rotativos e fragmentados | Gerenciamento de pool de proxies, detecção de banimentos | https://github.com/TeamHG-Memex/scrapy-rotating-proxies |
| pool de proxy | Coleta, validação e rotação de proxy | https://github.com/jhao104/proxy_pool |
| solicitações-agente-de-usuário-aleatório | Randomização de User-Agent e proxy | https://pypi.org/project/requests-random-user-agent/ |
Melhores práticas para rotação de proxy
- Diversidade: Utilize servidores proxy de diferentes faixas de IP e localizações.
- Respeite o arquivo Robots.txt: Respeite as políticas do site, em um espírito de civilidade digital.
- Limitação de taxa: Limitar o número de solicitações para imitar o comportamento humano e evitar a detecção.
- Registro: Registre o uso e as falhas do proxy para aprimoramentos futuros.
- Considerações legais: Analise cuidadosamente o panorama jurídico e ético das suas atividades (ver Guia da EFF).
Leitura adicional
- Documentação de solicitações Python
- proxies rotativos e fragmentados
- Fornecedores de listas de proxy: Bright Data, Oxilabs
- Rotacionando proxies com Selenium
Que essas ferramentas e práticas sejam seu passaporte pelas inúmeras avenidas da web, cada solicitação acompanhada pela sutileza de uma máscara em constante transformação.
Comentários (0)
Ainda não há comentários aqui, você pode ser o primeiro!