Node.js é um ambiente de execução JavaScript popular que permite criar aplicações de servidor e de rede. Por exemplo, se você precisa buscar dados de uma API remota ou site no Node.js, pode usar um servidor proxy web que atua como intermediário entre sua aplicação e a internet. Isso permite contornar restrições de rede, acessar conteúdo bloqueado geograficamente e ocultar seu endereço IP.
A maioria dos aplicativos JavaScript modernos usa a Fetch API para fazer solicitações HTTP. Ela está disponível em navegadores web como um recurso nativo, e desde o Node.js v16, está disponível sem dependências externas. No entanto, há um detalhe: a funcionalidade fetch nativa do Node.js espelha o que está disponível em navegadores web e não consegue trabalhar com proxies.
Felizmente, há uma solução simples: a biblioteca node-fetch. Essa biblioteca inclui uma Fetch API para Node.js que adiciona funcionalidades específicas do Node.js, incluindo a capacidade de trabalhar com agentes HTTP do Node.js. Um agente HTTP é uma ferramenta que gerencia o pooling de conexões, permitindo reutilizar conexões para solicitações HTTP. Isso significa que você pode usar um agente HTTP para configurar suas solicitações fetch à medida que passam pelo proxy.
Neste artigo, você aprenderá como usar node-fetch junto com a biblioteca https-proxy-agent para criar um agente HTTP que suporta proxies HTTP e HTTPS. Você também aprenderá sobre o serviço de proxy da Bright Data serviço de proxy, que oferece uma variedade de tipos de proxy e recursos para suas necessidades de scraping de dados.
Como Usar um Proxy com node-fetch
Antes de começar este tutorial, você precisa dos seguintes pré-requisitos:
- Uma instalação funcional do Node.js.
- Acesso a um proxy web. Alternativamente, para fins de teste, você pode configurar seu próprio proxy web usando Node.js.
Depois de ter esses pré-requisitos, você está pronto para começar!
Criar um Projeto Node.js
A primeira coisa que você precisa fazer é criar um projeto Node.js e inicializá-lo com npm. Para fazer isso, abra um terminal e execute os seguintes comandos:
mkdir node-fetch-proxy
cd node-fetch-proxy
npm init -y
Este comando cria uma pasta chamada node-fetch-proxy, navega até ela, e cria um arquivo package.json com alguns valores padrão.
Instalar node-fetch e https-proxy-agent
Em seguida, você precisa instalar as bibliotecas node-fetch e https-proxy-agent como dependências do seu projeto com o seguinte comando:
npm install –-save node-fetch https-proxy-agent
Este comando instala as bibliotecas na pasta node_modules do seu projeto e atualiza seu arquivo package.json adequadamente.
Use o HttpsProxyAgent e node-fetch para Fazer Chamadas HTTP através de um Proxy
Depois de instalar as bibliotecas node-fetch e https-proxy-agent, você precisa usar a classe HttpsProxyAgent da biblioteca https-proxy-agent junto com a função fetch da biblioteca node-fetch para fazer chamadas HTTP através de um proxy. Para fazer isso, crie um arquivo chamado proxy.mjs na pasta do seu projeto e adicione o seguinte código:
import fetch from 'node-fetch';
import { HttpsProxyAgent } from 'https-proxy-agent';
// Substitua <proxy_url> pela URL real do seu proxy
const agent = new HttpsProxyAgent('<proxy_url>');
// Use fetch com a opção agent para fazer uma solicitação HTTP através do proxy
// Substitua <target_url> pela URL que você deseja solicitar
fetch('<target_url>', { agent })
.then((response) => response.text())
.then((text) => console.log(text))
.catch((error) => console.error(error));
Este código realiza as seguintes ações:
- Importa a função
fetchda bibliotecanode-fetch, que fornece uma Fetch API compatível com navegadores para Node.js. - Importa a classe
HttpsProxyAgentda bibliotecahttps-proxy-agent, que cria um agente HTTP que suporta proxies HTTPS. - Cria uma instância de
HttpsProxyAgentcom a URL do seu proxy. Você precisa substituir<proxy_url>pela URL real do seu proxy, que deve ter o seguinte formato:http://username:password@host:port. - Usa a função
fetchcom a opção agent para fazer uma solicitação HTTP através do proxy. Você precisa substituir<target_url>pela URL que deseja solicitar, que pode ser qualquer URL HTTP ou HTTPS válida. - Lida com a resposta e imprime quaisquer erros que ocorram.
Salve o código e execute o seguinte comando:
node proxy.mjs
Este comando executa seu código e faz uma solicitação HTTP através do proxy. Você deve ver o texto da resposta ou quaisquer erros no seu terminal.
Limitações ao Usar um Proxy com node-fetch
Embora essa abordagem funcione bem ao usar um proxy simples, você descobrirá que muitos casos de uso reais, como scraping de dados, exigem uma abordagem mais sofisticada. Muitos sites e APIs web bloqueiam os endereços IP de proxies conhecidos, dificultando a coleta dos dados que você precisa.
Além disso, sites podem ter restrições geográficas que ocultam conteúdo de visitantes com base em sua localização. Por exemplo, alguns jornais dos EUA bloqueiam visitantes europeus de seus sites devido a dificuldades em cumprir o Regulamento Geral de Proteção de Dados (GDPR) e a Diretiva de Privacidade Eletrônica.
Felizmente, proxies mais sofisticados, como os oferecidos pelo serviço de proxy da Bright Data, fornecem vários tipos de proxies que ajudam os usuários a contornar essas limitações.
Serviço de Proxy da Bright Data
Se você está procurando um serviço de proxy confiável e escalável para scraping de dados, não procure mais. A Bright Data é uma fornecedora líder de soluções de proxy, oferecendo 400M+ monthly endereços IP em 195 países, com 99,9% de tempo de atividade.
Com os servidores proxy da Bright Data, você pode escolher entre diferentes tipos de proxies, como residencial, datacenter, provedor de serviços de internet (ISP), móvel, ou super proxies, dependendo do seu caso de uso e orçamento. Essa variedade de opções é útil ao criar um scraper web que precisa obter conteúdo de sites que bloqueiam endereços IP de proxy conhecidos.
Em vez de depender de um proxy genérico executado em um local que você não pode controlar, os proxies da Bright Data permitem que você escolha o tipo de proxy que melhor corresponde ao tipo de usuário que normalmente acessa o conteúdo que você está tentando fazer scraping. Você também pode acessar recursos avançados, como geolocalização, rotação de IP e controle de sessão, que garantem que sua aplicação não seja bloqueada.
Tipos de Proxy da Bright Data
A Bright Data oferece diferentes tipos de proxies para diferentes cenários de scraping de dados. A seguir, alguns dos proxies que eles oferecem:
- O Proxy residencial canaliza suas consultas de internet através de dispositivos genuínos, como computadores pessoais ou laptops, que estão conectados à web por meio de um ISP residencial. Esses proxies se destacam em atividades de scraping de dados porque se misturam com usuários comuns, o que reduz a chance de suas solicitações proxy serem bloqueadas.
- Os servidores proxy atuam como um gateway e concedem a você acesso à extensa rede de proxies residenciais da Bright Data. Com uma única URL de super proxy, você pode se conectar a qualquer proxy residencial sem precisar designar um endereço IP específico. Além disso, o super proxy oferece a flexibilidade de ajustar várias configurações, incluindo a seleção do país, cidade, ISP ou ASN do proxy residencial que você deseja usar.
- O Proxy de datacenter usa um endereço IP alocado a um servidor situado dentro de uma instalação de datacenter. Proxies de datacenter são propensos à detecção e subsequente bloqueio por sites e APIs, mas ainda são úteis para aplicativos que acessam dados de URLs que não tentam bloquear solicitações de proxy. Eles são mais apropriados para projetos de scraping de dados onde seu tráfego de scraping não precisa vir de endereços IP residenciais, comerciais ou móveis.
- O Proxy ISP é um endereço IP atribuído a um servidor hospedado por um ISP. Os proxies ISP são semelhantes aos proxies residenciais, com a diferença de que seus endereços IP podem ser IPs residenciais ou comerciais. Isso os torna uma boa opção ao fazer scraping de sites que esperam uma mistura de tráfego residencial e comercial.
Proxy Manager e APIs
Com tantas opções, gerenciar o uso de seus proxies pode ser complicado. Felizmente, o Bright Data Proxy Manager permite que você configure e gerencie facilmente seus proxies, monitore seu uso e desempenho, e solucione quaisquer problemas.
Além disso, você pode usar as APIs e integrações da Bright Data para integrar proxies ao seu código de forma transparente. A Scraping Browser API facilita o uso de proxies a partir de ferramentas que você provavelmente já conhece (ou seja Playwright e Puppeteer), e o Web Unlocker ajuda você a superar bloqueios que normalmente impediriam seu scraper de acessar um site.
Conclusão
Neste artigo, você aprendeu como usar a biblioteca node-fetch com a biblioteca https-proxy-agent para criar um agente HTTP que suporta proxies HTTPS. Você também aprendeu sobre o serviço de proxy da Bright Data, que oferece uma variedade de tipos de proxy e recursos para suas necessidades de scraping de dados.
Usar um proxy web com solicitações fetch no Node.js pode ajudá-lo a contornar restrições de rede, acessar conteúdo bloqueado geograficamente ou ocultar seu endereço IP. No entanto, o uso simples de proxy com node-fetch e https-proxy-agent pode não ser suficiente para alguns cenários de scraping de dados, especialmente se você precisar de anonimato, geolocalização, rotação de IP ou outros recursos avançados. Nesses casos, você deve considerar usar um proxy da Bright Data.
Os serviços de proxy da Bright Data oferecem uma ampla gama de recursos que podem ajudá-lo a acessar qualquer site ou API sem ser bloqueado ou limitado. Você também pode escolher entre diferentes tipos de proxies dependendo do seu caso de uso e orçamento. Para começar com o serviço de proxy da Bright Data, cadastre-se hoje.