🎯 Um navegador em nuvem personalizável e anti-detecção alimentado por Chromium desenvolvido internamente, projetado para rastreadores web e agentes de IA. 👉Experimente agora
De volta ao blog

Como Usar um Proxy de Fetch em Node: Guia Completo de Implementação

Ava Wilson
Ava Wilson

Expert in Web Scraping Technologies

23-Dec-2025
Dê uma Olhada Rápida

Domine a integração de proxy do Node.js com Scrapeless Proxies — soluções de proxy rápidas, confiáveis e fáceis de implementar para desenvolvedores.

Introdução ao Node Fetch e Integração de Proxy

O Node.js se tornou o ambiente de execução preferido para a construção de aplicações escaláveis do lado do servidor. Ao trabalhar com requisições HTTP, a API Node Fetch (ou biblioteca node-fetch) oferece uma maneira simples e poderosa de fazer requisições a APIs e sites externos. No entanto, para proteger seu anonimato, contornar restrições geográficas ou gerenciar múltiplas requisições concorrentes, a integração de um servidor proxy na sua implementação do Node Fetch é essencial.

Este guia abrangente o levará por todo o processo de configuração e uso de um proxy Node Fetch, desde a configuração básica até estratégias de implementação avançadas.

Entendendo Node Fetch e Proxies

Antes de mergulhar na implementação, vamos esclarecer com o que estamos trabalhando:

Node Fetch é uma biblioteca leve de cliente HTTP que traz a familiar API Fetch dos navegadores para o Node.js. Ela permite que os desenvolvedores façam requisições HTTP com uma sintaxe simples baseada em promessas.

Proxies agem como intermediários entre sua aplicação Node.js e o servidor de destino. Suas requisições são roteadas por meio do servidor proxy, que mascara seu verdadeiro endereço IP e pode fornecer benefícios adicionais, como balanceamento de carga, filtragem de conteúdo e otimização de requisições.

Quando combinados, Node Fetch e proxies permitem:

  • Raspagem de sites mantendo o anonimato
  • Superação de restrições geográficas e bloqueios baseados em IP
  • Distribuição de requisições entre múltiplos endereços IP
  • Teste de aplicações a partir de diferentes localidades geográficas
  • Gerenciamento mais eficaz dos limites de taxa de APIs

Configurando o Node Fetch com Proxies

Passo 1: Instalar Dependências Necessárias

Primeiro, certifique-se de que você tem o Node.js instalado no seu sistema (versão 14.0 ou superior recomendada). Em seguida, instale os pacotes necessários:

bash Copy
npm install node-fetch
npm install https-proxy-agent
npm install http-proxy-agent

Os pacotes do agente proxy permitem que você configure as configurações de proxy HTTP e HTTPS para suas requisições fetch.

Passo 2: Configurar as Configurações do Proxy

Crie um arquivo de configuração para armazenar suas credenciais e configurações do proxy:

javascript Copy
// proxy-config.js
module.exports = {
  proxyUrl: 'http://proxy-server.com:8080',
  username: 'seu-nome-de-usuario',
  password: 'sua-senha',
  timeout: 30000,
  retries: 3
};

Passo 3: Implementar Requisição Básica com Proxy

Aqui está um exemplo simples de como fazer uma requisição fetch por meio de um proxy:

javascript Copy
const fetch = require('node-fetch');
const HttpProxyAgent = require('http-proxy-agent');
const HttpsProxyAgent = require('https-proxy-agent');
const config = require('./proxy-config');

async function fetchWithProxy(url) {
  const httpAgent = new HttpProxyAgent(config.proxyUrl);
  const httpsAgent = new HttpsProxyAgent(config.proxyUrl);

  try {
    const response = await fetch(url, {
      agent: url.startsWith('https') ? httpsAgent : httpAgent,
      timeout: config.timeout
    });

    if (!response.ok) {
      throw new Error(`Erro HTTP! status: ${response.status}`);
    }

    return await response.json();
  } catch (error) {
    console.error('Erro de Fetch:', error);
    throw error;
  }
}

// Uso
fetchWithProxy('https://api.exemplo.com/dados')
  .then(data => console.log(data))
  .catch(error => console.error(error));

Passo 4: Configuração Avançada de Proxy com Autenticação

Para proxies que requerem autenticação, use esta configuração aprimorada:

javascript Copy
const fetch = require('node-fetch');
const HttpProxyAgent = require('http-proxy-agent');
const HttpsProxyAgent = require('https-proxy-agent');

const proxyUrl = 'http://usuario:senha@proxy-server.com:8080';

const httpAgent = new HttpProxyAgent(proxyUrl);
const httpsAgent = new HttpsProxyAgent(proxyUrl);

async function fetchWithAuthenticatedProxy(url) {
  try {
    const response = await fetch(url, {
      agent: url.startsWith('https') ? httpsAgent : httpAgent,
      headers: {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
      }
    });

    return await response.json();
  } catch (error) {
    console.error('Requisição falhou:', error);
    throw error;
  }
}

Estratégias Avançadas de Implementação

Implementando Rotação de Proxies

Para evitar detecção e contornar limites de taxa, implemente a rotação automática de proxies:

javascript Copy
const proxyList = [
  'http://proxy1.com:8080',
```javascript
'http://proxy2.com:8080',
  'http://proxy3.com:8080'
];

let currentProxyIndex = 0;

function getNextProxy() {
  const proxy = proxyList[currentProxyIndex];
  currentProxyIndex = (currentProxyIndex + 1) % proxyList.length;
  return proxy;
}

async function fetchWithRotation(url) {
  const proxy = getNextProxy();
  const agent = new HttpsProxyAgent(proxy);

  try {
    const response = await fetch(url, { agent });
    return await response.json();
  } catch (error) {
    console.error(`Proxy ${proxy} falhou:`, error);
    throw error;
  }
}

Implementando Lógica de Retentativas

Aumente a confiabilidade com mecanismos de retentativa automáticos:

javascript Copy
async function fetchWithRetry(url, maxRetries = 3) {
  let lastError;

  for (let attempt = 1; attempt <= maxRetries; attempt++) {
    try {
      const proxy = getNextProxy();
      const agent = new HttpsProxyAgent(proxy);

      const response = await fetch(url, {
        agent,
        timeout: 10000
      });

      if (response.ok) {
        return await response.json();
      }

      throw new Error(`HTTP ${response.status}`);
    } catch (error) {
      lastError = error;
      console.log(`Tentativa ${attempt} falhou:`, error.message);
      await new Promise(resolve => setTimeout(resolve, 1000 * attempt));
    }
  }

  throw lastError;
}

Manipulando Diferentes Tipos de Resposta

APIs diferentes retornam diferentes tipos de conteúdo. Manipule-os adequadamente:

javascript Copy
async function fetchWithProxyAdvanced(url, options = {}) {
  const agent = new HttpsProxyAgent(options.proxy || 'http://proxy:8080');

  try {
    const response = await fetch(url, {
      agent,
      method: options.method || 'GET',
      headers: options.headers || {},
      timeout: options.timeout || 30000
    });

    if (!response.ok) {
      throw new Error(`HTTP ${response.status}`);
    }

    const contentType = response.headers.get('content-type');

    if (contentType && contentType.includes('application/json')) {
      return await response.json();
    } else if (contentType && contentType.includes('text')) {
      return await response.text();
    } else {
      return await response.buffer();
    }
  } catch (error) {
    console.error('Erro de Fetch:', error);
    throw error;
  }
}

Soluções de Proxy Recomendadas

Scraping de Proxies: Serviços Premium de Proxy para Node.js

Scrapeless Proxies fornece acesso a IPs residenciais, de datacenter, IPv6 e estáticos, projetados para usuários individuais e empresariais. Com mais de 90 milhões de IPs residenciais em mais de 195 países, o Scrapeless oferece cobertura, velocidade e confiabilidade inigualáveis para aplicações Node.js.

🌍 Proxies Residenciais

Perfeito para scraping web e coleta de dados em Node.js:

  • 90M+ IPs Reais: Acesso a mais de 90 milhões de endereços IP residenciais em mais de 195 países
  • Rotação Automática: A rotação contínua de IPs evita bloqueios e detecções
  • 99,98% de Taxa de Sucesso: Confiabilidade líder na indústria garante que suas solicitações sejam atendidas
  • Suporte a Geo-targeting: Direcionamento a locais geográficos específicos com precisão
  • Suporte Multi-Protocolo: Protocolos HTTP, HTTPS e SOCKS5 disponíveis
  • Desempenho Ultra-Rápido: Tempos de resposta inferiores a 0,5s para operações sensíveis ao tempo
  • Integração Fácil com Node.js: Configuração simples com node-fetch e outros clientes HTTP

⚡ Proxies de Datacenter

Para aplicações Node.js de alto desempenho:

  • 99,99% de Uptime: Confiabilidade de nível empresarial
  • Resposta Ultra-Rápida: Otimizada para aplicações de alto desempenho
  • Sessões Ilimitadas: Sem restrições de duração de sessão
  • Integração API Fácil: Configuração simples e integração perfeita com Node.js
  • Alta Largura de Banda: Ideal para operações em larga escala
  • Baixa Latência: Atraso mínimo garante um desempenho suave
  • Custo-Efetivo: Solução acessível para solicitações de alto volume

🔐 Proxies IPv6

Soluções de proxy IPv6 de próxima geração:

  • 50M+ IPs IPv6: Extensa coleção de endereços IPv6 verificados
  • Rotação Automática: Mecanismos de rotação inteligentes
  • Alta Anonimidade: Máxima proteção à privacidade
  • Conformidade com o GDPR e CCPA: Conformidade regulatória total
  • Cobrança por GB: Modelo de preços flexível e transparente

🏠 Proxies ISPs Estáticos

Para sessões Node.js de longo prazo:

  • IPs Estáticos Dedicados: Endereços IP consistentes para sessões confiáveis
  • 99,99% de Uptime: Confiabilidade de nível empresarial
  • Baixa Latência: Atrasos de resposta mínimos
  • Perfeito para APIs: Manter conexões persistentes sem interrupções
``` ## Melhores Práticas para Proxies de Fetch no Node

Sempre Use Agentes HTTPS: Para conexões seguras, utilize sempre HttpsProxyAgent em vez de HttpProxyAgent para manter a criptografia.

Implemente Tratamento de Erros: Proxies podem falhar. Sempre envolva suas chamadas de fetch em blocos try-catch e implemente uma lógica de repetição.

Defina Timeouts Apropriados: Proxies podem adicionar latência. Defina valores de timeout razoáveis (tipicamente 30-60 segundos) para evitar requisições penduradas.

Monitore o Desempenho do Proxy: Acompanhe taxas de sucesso e tempos de resposta para identificar proxies que falham e otimizar o desempenho.

Rotacione User-Agents: Combine rotação de proxies com rotação de User-Agent para reduzir ainda mais os riscos de detecção.

Respeite os Limites de Taxa: Mesmo com proxies, respeite os limites de taxa e as diretrizes do robots.txt do site-alvo.

Faça Log e Depuração: Mantenha logs detalhados do uso do proxy para solucionar problemas e rastrear padrões.

Solucionando Problemas Comuns

Conexão do Proxy Recusada

Problema: Recebendo erros "ECONNREFUSED" ao conectar-se ao proxy.

Solução: Verifique se o endereço e a porta do servidor proxy estão corretos, assegure-se de que o servidor proxy está em funcionamento e verifique se as regras de firewall não estão bloqueando a conexão.

Falhas de Autenticação

Problema: Recebendo erros de autenticação apesar de credenciais corretas.

Solução: Certifique-se de que as credenciais estão formatadas corretamente na URL do proxy, verifique se há caracteres especiais que precisam de codificação de URL e valide as credenciais com seu provedor de proxy.

Erros de Timeout

Problema: As requisições estão expirando ao passar pelo proxy.

Solução: Aumente o valor do timeout, verifique o desempenho do servidor proxy, reduza as requisições concorrentes e implemente uma lógica de repetição com backoff exponencial.

Bloqueio de IP Apesar do Proxy

Problema: Continuando a ser bloqueado mesmo ao usar um proxy.

Solução: Rotacione proxies com mais frequência, utilize proxies residenciais em vez de datacenter, adicione cabeçalhos apropriados de User-Agent e varie os padrões de requisição para parecer mais humano.

Perguntas Frequentes

Qual é a diferença entre node-fetch e o fetch embutido?

Node.js 18+ inclui suporte nativo ao fetch. No entanto, node-fetch ainda é amplamente utilizado pela compatibilidade com versões mais antigas do Node.js e porque oferece mais opções de personalização.

Posso usar proxies SOCKS5 com Node Fetch?

Sim, mas você precisa usar o pacote socks-proxy-agent em vez dos agentes de proxy padrão. Instale com npm install socks-proxy-agent.

Como faço para lidar com autenticação de proxy corretamente?

Inclua credenciais diretamente na URL do proxy: http://username:password@proxy:port. Para caracteres especiais, use codificação de URL.

Devo rotacionar proxies para cada requisição?

Depende do seu caso de uso. Para raspagem de dados, rotacione proxies frequentemente. Para chamadas de API, você pode precisar de rotação apenas se atingir limites de taxa.

Qual é o número máximo de requisições concorrentes através de um proxy?

Isso depende dos limites do provedor de proxy. A maioria permite centenas de conexões concorrentes. Verifique a documentação do seu provedor para limites específicos.

Como posso testar se minha configuração de proxy está funcionando?

Faça uma requisição de teste para um serviço de eco simples ou API de verificação de IP (como https://httpbin.org/ip) e verifique se a resposta mostra o IP do proxy em vez do seu IP real.

Conclusão

Integrar proxies com Node Fetch é uma técnica poderosa para construir aplicações web robustas e escaláveis. Seja para raspagem de dados, gerenciamento de requisições de API ou proteção da sua anonimidade, seguir estas melhores práticas ajudará você a implementar uma solução de proxy confiável.

Com o amplo pool de IPs e infraestrutura confiável da Scrapeless Proxies, você pode implementar soluções de proxy de nível de produção que atendem até os casos de uso mais exigentes. Comece seu teste gratuito hoje e experimente a diferença que proxies de qualidade podem fazer para suas aplicações Node.js.

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.

Artigos mais populares

Catálogo