Em 7 de outubro de 2026, a Shifter tem o maior pool de IPs dos EUA ativos, mais do que a Oxylabs e a Bright Data, por uma fração do custo.A Shifter agora tem o maior pool de IPs ativos dos EUA

Ver benchmarks

Frameworks de Scraping Com Gerenciamento de Proxy Integrado: O Que Cada Um Oferece

Scrapy, Crawlee, Colly, Playwright, Puppeteer e Selenium comparados quanto ao suporte a proxy: rotação, sessões e credenciais, e o que um gateway rotativo muda.

Engenharia · Atualizado em 9 de novembro de 2026 · 8 min de leitura
configurarrotacionarsessãoCrawleeScrapyCollyPlaywrightPuppeteerSelenium
Seis ferramentas, três tarefas de proxy. As células azul já são cuidadas para você.
Conhecimento
Nesta página
  1. A resposta curta
  2. Crawlee: proxies como um recurso gerenciado
  3. Scrapy: um proxy por requisição, a rotação é sua
  4. Colly: um alternador round-robin simples
  5. Playwright e Puppeteer: isolamento por contexto
  6. Selenium: o navegador inteiro, e desajeitado com senhas
  7. O que um gateway rotativo muda
  8. Montando a solução
  9. Qual escolher
  10. Fontes e referências

Quase todo framework de scraping permite configurar um proxy. Bem menos deles gerenciam os proxies para você: fazendo a rotação, aposentando os bloqueados e mantendo uma sessão em um único IP. Se você usa proxies residenciais, saber qual parte o framework cuida e qual parte o gateway cuida economiza muito código de ligação.

Este guia compara seis ferramentas comuns em três perguntas: como você configura o proxy, se a ferramenta faz a rotação de proxies sozinha e se ela vincula uma sessão a um proxy. Depois mostra a pequena quantidade de código que cada uma precisa por trás de um gateway rotativo.

A resposta curta

FerramentaLinguagemComo você configura o proxyFaz rotação sozinhaVincula uma sessão a um proxy
CrawleeNode.jsProxyConfigurationSim: round robin, função personalizada, camadasSim, através do seu pool de sessões
ScrapyPythonrequest.meta["proxy"] ou variáveis de ambienteNão, precisa do seu próprio middlewareNão
CollyGoSetProxy ou SetProxyFuncSim: alternador round-robinNão
PlaywrightNode.js, Python, Java, .NETNo início ou por contexto de navegadorNãoPor contexto
PuppeteerNode.jsFlag de inicialização ou por contexto de navegadorNãoPor contexto
SeleniumVáriosOpção do navegador inteiroNãoNão

Crawlee é o único que trata proxies como algo a ser gerenciado em vez de uma configuração. As ferramentas de navegador oferecem isolamento por contexto, que é a base para sessões, mas a lógica de rotação é sua.

Crawlee: proxies como um recurso gerenciado

O ProxyConfiguration do Crawlee recebe uma lista de URLs de proxy e faz a rotação entre elas “de forma round-robin”. Em vez de uma lista, você pode passar uma função que escolhe o proxy para cada requisição. Um terceiro modo, proxies em camadas, começa com a camada mais barata (geralmente nenhum proxy), sobe uma camada quando um site bloqueia o crawler e volta a descer quando a camada inferior volta a funcionar.

A parte que mais importa são as sessões. Quando o crawler roda com seu pool de sessões, cada sessão mantém o mesmo proxy: nas palavras da documentação, chamadas posteriores “com o mesmo sessionId sempre retornarão a mesma proxyUrl”. Quando o Crawlee decide que uma sessão está bloqueada, ele a aposenta, e a próxima sessão recebe um proxy diferente. Os cookies seguem a sessão, então o IP e os cookies permanecem juntos.

Scrapy: um proxy por requisição, a rotação é sua

O HttpProxyMiddleware do Scrapy lê o proxy de request.meta["proxy"], e recorre às variáveis de ambiente http_proxy e https_proxy. As credenciais podem ficar na URL, como em http://username:password@host:port. Isso é tudo o que ele faz. Escolher um proxy diferente por requisição, perceber bloqueios e descansar proxies mortos ficam por sua conta ou de uma extensão como o scrapy-rotating-proxies, que lê uma lista de proxies e trata respostas não-200 ou vazias como bloqueios por padrão.

Nosso guia de integração com Scrapy cobre a configuração básica, e o post sobre rotação de proxies residenciais no Scrapy aprofunda o assunto do middleware.

Colly: um alternador round-robin simples

Colly, o framework em Go, tem o SetProxy para um único proxy e o SetProxyFunc para uma função que escolhe um por requisição. Seu pacote proxy inclui o RoundRobinProxySwitcher, que “faz a rotação de ProxyURLs a cada requisição” e aceita URLs http, https e socks5. Não há conceito de sessão: se duas requisições precisam compartilhar um IP, você decide isso na sua própria função.

Playwright e Puppeteer: isolamento por contexto

As ferramentas de automação de navegador não fazem rotação de nada, mas permitem que cada contexto de navegador use seu próprio proxy, o que é como você executa muitas sessões separadas em um único navegador.

  • Playwright recebe uma opção proxy com server, username e password, tanto no início para o navegador inteiro quanto em newContext() para um único contexto. Veja nosso guia de integração com Playwright para a configuração completa.
  • Puppeteer configura um proxy com a flag de inicialização --proxy-server, ou por contexto com createBrowserContext({ proxyServer }). Nenhum dos dois recebe credenciais: você responde ao desafio de login do proxy com page.authenticate().

Dê a cada contexto sua própria sessão e você terá um IP e um conjunto de cookies por contexto, que é o que um fluxo com login exige.

Selenium: o navegador inteiro, e desajeitado com senhas

Selenium configura o proxy através de opções do navegador, então ele se aplica ao navegador inteiro. Com o Chrome, o caminho usual é o switch --proxy-server, que não tem espaço para um nome de usuário e senha. As soluções alternativas comuns são uma pequena extensão de navegador que responde ao desafio de login, ou um proxy de encaminhamento local sem senha que repassa o tráfego ao seu provedor com credenciais. Selenium Wire, antes a solução popular, foi arquivado em 3 de janeiro de 2024 e não é mais mantido.

O que um gateway rotativo muda

A rotação dos frameworks foi pensada para listas de proxies: uma centena de pares IP:porta que você percorre, testa e aposenta. Um gateway rotativo residencial funciona de forma diferente. Você se conecta a um único host e porta, e o gateway escolhe o IP de saída. Isso tira a maior parte do trabalho do seu código:

  • A rotação acontece no gateway, então uma única URL de proxy já é suficiente. Uma lista round-robin de uma única entrada é apenas uma configuração.
  • As sessões são solicitadas no nome de usuário. Com Shifter você adiciona sid-<id> para manter um IP de saída fixo e ttl-<seconds> para dizer por quanto tempo mantê-lo, como explicado em proxies estáticos vs rotativos.
  • A localização também faz parte do nome de usuário, então um crawler pode direcionar para um país ou cidade por requisição sem uma segunda lista de proxies.

Assim, o trabalho do framework se reduz a uma coisa: mapear sua própria ideia de sessão para o ID de sessão no nome de usuário do proxy.

Montando a solução

Crawlee. Passe uma função que monta o nome de usuário a partir do ID de sessão do Crawlee. IDs de sessão podem conter caracteres como underscores, então mantenha apenas letras e dígitos:

import { CheerioCrawler, ProxyConfiguration } from 'crawlee';

const proxyConfiguration = new ProxyConfiguration({
  newUrlFunction: (sessionId) => {
    const sid = sessionId
      ? `-sid-${String(sessionId).replace(/[^a-zA-Z0-9]/g, '')}-ttl-600`
      : '';
    return `http://customer-USERNAME${sid}:PASSWORD@p.shifter.io:443`;
  },
});

const crawler = new CheerioCrawler({
  proxyConfiguration,
  useSessionPool: true,
  persistCookiesPerSession: true,
  async requestHandler({ request, $ }) {
    console.log(request.url, $('title').text());
  },
});

await crawler.run(['https://example.com/']);

Quando o Crawlee aposenta uma sessão bloqueada, o próximo ID de sessão gera por conta própria um novo IP fixo.

Scrapy. Um pequeno middleware de download configura o proxy antes do próprio middleware de proxy do Scrapy rodar. Requisições que carregam um valor session em meta compartilham um IP; as demais fazem rotação:

# middlewares.py
class GatewayProxyMiddleware:
    def process_request(self, request, spider):
        sid = request.meta.get("session")
        user = "customer-USERNAME"
        if sid:
            user += f"-sid-{sid}-ttl-600"
        request.meta["proxy"] = f"http://{user}:PASSWORD@p.shifter.io:443"

# settings.py
DOWNLOADER_MIDDLEWARES = {
    "myproject.middlewares.GatewayProxyMiddleware": 350,
}

Playwright. Um contexto por sessão:

const context = await browser.newContext({
  proxy: {
    server: 'http://p.shifter.io:443',
    username: 'customer-USERNAME-sid-cart1-ttl-600',
    password: 'PASSWORD',
  },
});

Qual escolher

Escolha o framework pelo site e pela equipe, não pelos seus recursos de proxy. Crawlee é a escolha mais forte quando você quer bloqueio, sessões e camadas de proxy gerenciados para você em Node.js. Scrapy continua sendo a forma mais rápida de rastrear grandes quantidades de páginas HTML simples em Python, e sua lacuna de proxy é um middleware de dez linhas. Playwright ou Puppeteer são as ferramentas certas quando as páginas precisam de um navegador de verdade, e os contextos oferecem sessões limpas. Selenium também funciona, com mais esforço em torno das credenciais.

Por trás de um gateway rotativo, todos os seis se reduzem ao mesmo padrão: uma única URL de proxy, e um ID de sessão no nome de usuário sempre que as requisições precisarem compartilhar um IP. Para saber mais sobre como colocar isso em prática em um crawler de produção, veja nosso caso de uso de web scraping.

Fontes e referências

Perguntas frequentes

Qual framework de scraping tem o gerenciamento de proxy embutido mais completo?

Crawlee. Seu ProxyConfiguration faz a rotação de uma lista de proxies, pode escolher um proxy por requisição com sua própria função, pode subir por níveis de proxies quando um site começa a bloquear, e vincula cada sessão a um único proxy para que cookies e IP permaneçam juntos. Scrapy, Playwright, Puppeteer e Selenium aceitam um proxy, mas deixam a rotação por sua conta.

O Scrapy faz a rotação de proxies sozinho?

Não. O HttpProxyMiddleware do Scrapy envia cada requisição através do proxy definido em request.meta['proxy'] ou nas variáveis de ambiente http_proxy e https_proxy. Fazer a rotação entre proxies exige seu próprio middleware ou uma extensão de terceiros como o scrapy-rotating-proxies.

Preciso da rotação de proxy do framework se meu provedor me dá um gateway rotativo?

Geralmente não. Um gateway rotativo de proxy residencial muda o IP de saída para você por trás de um único host e porta. O que você ainda precisa do framework é o gerenciamento de sessão: enviar o mesmo ID de sessão no nome de usuário do proxy para toda requisição que precisa compartilhar um IP, como um login ou um checkout.

Por que não posso colocar um nome de usuário e senha na flag de proxy do Chrome?

O switch --proxy-server do Chrome aceita apenas host e porta. O Puppeteer responde ao desafio de login do proxy com page.authenticate, e o Playwright aceita um nome de usuário e senha em sua opção de proxy. O Selenium não tem um equivalente embutido para o Chrome, então as pessoas usam uma pequena extensão de navegador ou um proxy local de encaminhamento.

Pronto para começar?

Experimente os proxies residenciais da Shifter, mais de 205M IPs, mais de 195 países, a partir de $ 0,75/GB.

Começar