Navegando pelo Labirinto: Fluxos de Trabalho de Proxy Gratuitos para Scraping de Conteúdo Dinâmico
Compreendendo a raspagem de conteúdo dinâmico
Conteúdo dinâmico, essa força mercurial que anima as páginas da web modernas, escapa à compreensão de requisições HTTP ingênuas. Renderizado por JavaScript, ele exige mais do que simples GETs; requer orquestração — requisições disfarçadas de navegadores legítimos, proxies fazendo piruetas além de proibições de IP e código que lê nas entrelinhas.
O papel dos proxies na raspagem dinâmica
Os proxies são as máscaras da nossa mascarada digital, essenciais para:
- Evasão de limites de taxa baseados em IP
- Contornando restrições geográficas
- Distribuindo tráfego para evitar detecção
Mas como se obtém esse anonimato sem recorrer a cofres públicos? Proxies gratuitos — efêmeros, indisciplinados e, ainda assim, indispensáveis. Vamos dissecar seu uso com precisão cirúrgica.
Fluxo de trabalho 1: Rotação de proxies públicos gratuitos com solicitações e BeautifulSoup
Ingredientes
- Listas de proxy gratuitas
pedidos
,Sopa Bonita
em Python
Passos
- Proxies de colheita
Raspe uma lista de proxies gratuitos, por exemplo, de lista-de-proxy-gratuita.net.
“`Píton
solicitações de importação
de bs4 importar BeautifulSoup
def get_proxies():
url = 'https://free-proxy-list.net/'
sopa = BeautifulSoup(requests.get(url).content, 'html.parser')
proxies = conjunto()
para linha em soup.find('table', id='proxylisttable').tbody.find_all('tr'):
se row.find_all('td')[6].text == 'sim': # somente proxies HTTPS
ip = linha.find_all('td')[0].texto
porta = linha.find_all('td')[1].texto
proxies.add(f'{ip}:{porta}')
retornar lista(proxies)
“`
- Rotacionar proxies para solicitações
“`Píton
importar aleatório
proxies = obter_proxies()
def buscar_com_proxy(url):
proxy = random.choice(proxies)
tentar:
resp = requests.get(url, proxies={“http”: f”http://{proxy}”, “https”: f”http://{proxy}”}, tempo limite=5)
se resp.status_code == 200:
retornar resp.text
exceto Exceção:
passar
retornar Nenhum
“`
- Lidar com conteúdo dinâmico
Para páginas com JS mínimo, inspecione o tráfego de rede para encontrar endpoints XHR e buscar dados diretamente.
Vantagens e desvantagens
Recurso | Prós | Contras |
---|---|---|
Configurar | Rápido e fácil | Os proxies geralmente não são confiáveis |
Anonimato | Rotação de IP reduz proibições | Proxies lentos/inativos frequentes |
Conteúdo dinâmico | Funciona apenas para sites simples renderizados em JS | Sites JS completos precisam de emu de navegador |
Fluxo de trabalho 2: Raspagem com Selenium e rotação de proxy livre
Ingredientes
- Proxies SSL
- Selênio com um driver de navegador
Passos
- Obter uma lista de proxy
Lógica semelhante à anterior, mas com segmentação sslproxies.org.
- Configurar o Selenium para usar um proxy
“`Píton
do selênio importar webdriver
de selenium.webdriver.chrome.options importar opções
def get_chrome_driver(proxy):
opções = Opções()
opções.add_argument(f'–proxy-server=http://{proxy}')
opções.add_argument('–headless')
retornar webdriver.Chrome(opções=opções)
“`
- Raspar conteúdo dinâmico
pitão
proxies = obter_proxies()
driver = get_chrome_driver(random.choice(proxies))
driver.get('https://quotes.toscrape.com/js/')
conteúdo = driver.page_source
driver.sair()
Nota Poética
Com o Selenium, o navegador é seu pincel, pintando a página como o usuário humano a veria: JavaScript, CSS e todos os tons sutis de interatividade.
Vantagens e desvantagens
Recurso | Prós | Contras |
---|---|---|
Renderização JS | Lida com qualquer conteúdo dinâmico | Pesado em recursos |
Rotação de Proxy | Mascara IP de forma eficaz | Os proxies podem tornar o navegador lento ou bloqueado |
Detecção | Mais humano, menos detectável | Proxies gratuitos geralmente são bloqueados por grandes sites |
Fluxo de trabalho 3: Marionetista com ProxyChain para entusiastas do Node.js
Ingredientes
Passos
- Adquira Proxies Gratuitos
Javascript-escritor
const axios = require('axios');
função assíncrona getProxies() {
const res = await axios.get('https://www.proxy-list.download/api/v1/get?type=https');
retornar res.data.split('\r\n').filter(Boolean);
}
- Use ProxyChain para girar proxies com Puppeteer
“`javascript
const puppeteer = require('titereiro');
const ProxyChain = require('proxy-chain');
(assíncrono () => {
const proxies = aguarda getProxies();
para (const proxyUrl de proxies) {
const anonymizedProxy = aguardar ProxyChain.anonymizeProxy(http://${proxyUrl}
);
const navegador = aguarde puppeteer.launch({
argumentos: [--proxy-server=${anonymizedProxy}
, '–no-sandbox', '–disable-setuid-sandbox'],
sem cabeça: verdadeiro,
});
const page = aguardar navegador.newPage();
tentar {
aguarde page.goto('https://quotes.toscrape.com/js/', {waitUntil: 'networkidle2'});
const content = await page.content();
// Processar conteúdo…
} pegar (e) {
// Ignorar proxies ruins
}
aguardar navegador.close();
}
})();
“`
Vantagens e desvantagens
Recurso | Prós | Contras |
---|---|---|
Automação | Script robusto em Node.js | Dependência do Node.js |
Rotação de Proxy | ProxyChain gerencia falhas | Proxies gratuitos geralmente são instáveis/lentos |
Conteúdo dinâmico | O Puppeteer renderiza todo o JS | Taxa limitada pela velocidade do proxy |
Fluxo de trabalho 4: Agendamento inteligente de solicitações com Scrapy + Middleware proxy gratuito
Ingredientes
- Raspado
- proxies rotativos e fragmentados
- Listas de proxy gratuitas (proxyscrape.com)
Passos
- Instalar Middleware
pip install scrapy-rotating-proxies
- Configurar as configurações do Scrapy
pitão
Configurações #.py
ROTATING_PROXY_LIST_PATH = 'proxies.txt'
DOWNLOADER_MIDDLEWARES = {
'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
'rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}
- Preencher lista de proxy
Baixe e salve proxies para proxies.txt
:
https://api.proxyscrape.com/v2/?request=getproxies&protocol=http&timeout=1000&country=all&ssl=all&anonymity=all
- Raspe com Scrapy Spider
Scrapy, com proxies rotativos, caminha na ponta dos pés pelo jardim do conteúdo dinâmico. Para JavaScript completo, use dramaturgo brigão:
bater
pip install scrapy-playwright
E na sua aranha:
“`Píton
importar scrapy
classe QuotesSpider(scrapy.Spider):
nome = “citações”
start_urls = ['https://quotes.toscrape.com/js/']
def start_requests(self): para url em self.start_urls: rendimento scrapy.Request(url, meta={"playwright": True}) def parse(self, response): para citação em response.css("div.quote"): rendimento { "texto": citação.css("span.text::texto").get(), "autor": citação.css("pequeno.autor::texto").get(), }
“`
Vantagens e desvantagens
Recurso | Prós | Contras |
---|---|---|
Velocidade | Agendamento eficiente de solicitações | Curva de aprendizado para Scrapy |
Rotação de Proxy | Middleware lida com proibições | Proxies gratuitos são menos confiáveis |
Suporte JS | Com o Playwright, lida com JS completo | Configuração de peso pesado |
Fluxo de trabalho 5: Scraping orientado a API por meio de gateways de proxy gratuitos
Ingredientes
- API de compartilhamento da Web (nível gratuito limitado)
- Plano gratuito do ScraperAPI (uso limitado)
Passos
- Obter chave de API ou endpoint de proxy
Registre-se e obtenha um endpoint gratuito.
- Solicitações de rota via gateway proxy
Para ScraperAPI:
pitão
api_key = 'SUA_CHAVE_API'
url = f'http://api.scraperapi.com/?api_key={api_key}&url=https://quotes.toscrape.com/js/'
resposta = requests.get(url)
Para proxies do Web Share, use como nos exemplos anteriores.
Vantagens e desvantagens
Recurso | Prós | Contras |
---|---|---|
Confiabilidade | Proxies gerenciados, menos tempo de inatividade | Solicitações gratuitas limitadas |
Facilidade de uso | Rotação de proxy de resumos | Pode bloquear certos sites |
Conteúdo dinâmico | Algumas APIs renderizam JS antes de retornar | Níveis pagos para uso intenso |
Tabela Resumo Comparativa
Fluxo de trabalho | Suporte a JS dinâmico | Rotação de Proxy | Confiabilidade | Limitações gratuitas | Melhor Caso de Uso |
---|---|---|---|---|---|
Solicitações + Proxies Gratuitos | Baixo | Manual | Baixo | Proxies bloqueados/lentos | APIs XHR simples |
Selênio + Proxies Gratuitos | Alto | Manual | Médio | Proxies bloqueados, CPU alta | Sites JS complexos, pequena escala |
Titereiro + ProxyChain | Alto | Automatizado | Médio | Falhas frequentes de proxy | Automação Node.js |
Proxies Scrapy + Rotativos | Alto (com dramaturgo) | Automatizado | Médio | Configuração de middleware, proxies lentos | Raspagem escalável e avançada |
Gateways de API de proxy | Alto (depende da API) | Automatizado | Alto | Solicitações limitadas, inscrição necessária | Raspagem única e confiável |
Recursos
- lista-de-proxy-gratuita.net
- sslproxies.org
- lista de proxy.download
- proxyscrape.com/lista-de-proxy-gratuito
- proxies rotativos e fragmentados
- dramaturgo brigão
- plugin-extra-proxy-do-marionetista
- Lista de Proxy Gratuito do Web Share
- API de raspador
Deixe que seu código seja o cinzel e seus proxies o mármore — esculpa com paciência, pois cada página dinâmica é uma escultura digital, aguardando revelação sob a superfície.
Comentários (0)
Ainda não há comentários aqui, você pode ser o primeiro!