Como usar Proxies com node-fetch

Aprenda como configurar um proxy em Node-Fetch neste guia passo a passo.
10 min read
How to Set a Proxy in Node-Fetch blog image

Node.js é um ambiente de tempo de execução de JavaScript popular que permite criar aplicações do lado do servidor e de rede. Por exemplo, se precisar de ir buscar dados a uma API remota ou a um sítio web no Node.js, pode utilizar um servidor proxy web que atua como intermediário entre a sua aplicação e a Internet. Isto permite-lhe contornar as restrições de rede, aceder a conteúdos bloqueados geograficamente e ocultar o seu endereço IP.

A maioria das aplicações de JavaScript modernas utiliza a API Fetch para efetuar pedidos HTTP. Está disponível nos navegadores web como uma funcionalidade incorporada e, desde o Node.js v16, está disponível sem quaisquer dependências externas. No entanto, há um senão: a funcionalidade de busca incorporada no Node.js reflete o que está disponível nos navegadores web e não pode funcionar com proxies.

Felizmente, há uma solução simples: a biblioteca node-fetch. Esta biblioteca inclui uma API Fetch para Node.js que adiciona funcionalidades específicas de Node.js, incluindo a capacidade de trabalhar com agentes HTTP de Node.js. Um agente HTTP é uma ferramenta que gere o agrupamento de ligações, permitindo-lhe reutilizar ligações para pedidos HTTP. Isto significa que pode utilizar um agente HTTP para configurar os seus pedidos de busca à medida que estes passam pelo proxy.

Neste artigo, você aprenderá como usar o node-fetch junto com a biblioteca https-proxy-agent para criar um agente HTTP que suporte proxies HTTP e HTTPS. Você também aprenderá sobre o serviço de proxy de Bright Data, que oferece uma variedade de tipos de proxy e recursos para suas necessidades de raspagem da web.

Como usar um proxy com node-fetch

Antes de iniciar este tutorial, são necessários os seguintes pré-requisitos:

  • Uma instalação funcional de Node.js.
  • Acesso a um proxy web. Em alternativa, para efeitos de teste, pode configurar o seu próprio proxy web utilizando Node.js.

Quando tiver estes pré-requisitos, está pronto para começar!

Criar um projeto em Node.js

A primeira coisa que precisa de fazer é criar um projeto em Node.js e inicializá-lo com o npm. Para o fazer, abra o terminal e execute os seguintes comandos:

mkdir node-fetch-proxy
cd node-fetch-proxy
npm init -y

Esse 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, é necessário 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 ficheiro package.json em conformidade.

Usar HttpsProxyAgent e node-fetch para fazer chamadas HTTP através de um proxy

Depois de instalar as bibliotecas node-fetch e https-proxy-agent, é necessário utilizar a classe HttpsProxyAgent da biblioteca https-proxy-agent juntamente com a função fetch da biblioteca node-fetch para efetuar chamadas HTTP através de um proxy. Para tal, crie um ficheiro 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';

// Replace <proxy_url> with your actual proxy URL
const agent = new HttpsProxyAgent('<proxy_url>');

// Use fetch with the agent option to make an HTTP request through the proxy
// Replace <target_url> with the URL you want to request
fetch('<target_url>', { agent })
  .then((response) => response.text())
  .then((text) => console.log(text))
  .catch((error) => console.error(error));

Este código completa as seguintes ações:

  • Importa a função fetch da biblioteca node-fetch, que fornece uma API Fetch compatível com o navegador para Node.js.
  • Importa a classe HttpsProxyAgent da biblioteca https-proxy-agent, que cria um agente HTTP que suporta proxies HTTPS.
  • Cria uma instância HttpsProxyAgent com o seu URL de proxy. É necessário substituir <proxy_url> pelo URL real do proxy, que deve ter o seguinte formato: http://username:password@host:port.
  • Utiliza a função fetch com a opção de agente para efetuar um pedido HTTP através do proxy. É necessário substituir <target_url> pelo URL que pretende pedir, que pode ser qualquer URL HTTP ou HTTPS válido.
  • Trata a resposta e imprime quaisquer erros que ocorram.

Guardar o código e executar o seguinte comando:

node proxy.mjs

Este comando executa o seu código e faz um pedido HTTP através do proxy. Deve ver o texto de resposta ou quaisquer erros no seu terminal.

Limitações no uso de um proxy com node-fetch

Embora esta abordagem funcione bem quando se utiliza um proxy simples, verificará que muitos casos de utilização no mundo real, como a raspagem da web, requerem uma abordagem mais sofisticada. Muitos sítios web e APIs da web bloqueiam os endereços IP de proxies conhecidos, dificultando a coleta dos dados de que necessita.

Além disso, os sítios podem ter restrições geográficas que ocultam conteúdos aos visitantes com base na sua localização. Por exemplo, alguns jornais dos EUA bloqueiam a entrada de visitantes europeus nos seus sítios web devido a dificuldades em cumprir o Regulamento Geral de Proteção de Dados (RGPD) e a Diretiva de Privacidade e Comunicações Eletrónicas.

Felizmente, os proxies mais sofisticados, como os oferecidos pelo serviço de proxy de Bright Data, fornecem vários tipos de proxies que ajudam os usuários a contornar estas limitações.

Serviço de Proxy de Bright Data

Se procura um serviço de proxy fiável e escalável para a raspagem da web, não procure mais. Bright Data é um fornecedor líder de soluções de proxy, oferecendo mais de 72 milhões de endereços IP em 195 países, com 99,9% de tempo de funcionamento.

Com os servidores proxy de Bright Data, você pode escolher entre diferentes tipos de proxies, como residenciais, de centro de dados, de provedor de serviços de Internet (ISP), móveis ou superproxies, dependendo do seu caso de uso e orçamento. Esta gama de opções é útil ao criar um raspador da web que necessita de obter conteúdo de sítios que bloqueiam endereços IP de proxy conhecidos.

Em vez de confiar num proxy genérico executado num local que você não pode controlar, os proxies de Bright Data permitem que você escolha o tipo de proxy que melhor corresponde ao tipo de usuário que normalmente acesa o conteúdo que você está tentando raspar. Também pode aceder a funcionalidades avançadas, como a segmentação geográfica, a rotação de IP e o controlo de sessões, que garantem que a sua aplicação não seja bloqueada.

Tipos de proxy de Bright Data

Bright Data oferece diferentes tipos de proxies para diferentes cenários de raspagem da web. Seguem-se alguns dos proxies que oferecem:

  • O proxy residencial canaliza as suas consultas de Internet através de dispositivos genuínos, como computadores pessoais ou portáteis, que estão ligados à web através de um ISP residencial. Estes proxies são excelentes em atividades de raspagem da web porque se misturam com os usuários comuns, o que reduz a possibilidade de os seus pedidos de proxy serem bloqueados.
  • Os servidores proxy atuam como uma porta de entrada e lhe garantem a entrada na extensa rede de proxies residenciais da Bright Data. Com um único URL de superproxy, pode ligar-se a qualquer proxy residencial sem precisar de designar um endereço IP específico. Além disso, o superproxy oferece a flexibilidade de ajustar várias definições, incluindo a seleção do país, cidade, ISP ou ASN do proxy residencial que pretende utilizar.
  • O proxy de centro de dados utiliza um endereço IP atribuído a um servidor situado numa instalação de centro de dados. Os proxies de centro de dados são propensos a deteção e subsequente bloqueio por parte de sítios web e API, mas continuam a ser úteis para aplicações que acedem a dados de URLs que não tentam bloquear pedidos de proxy. São mais adequados para projetos de raspagem da web em que o tráfego de raspagem não tem de ser proveniente de endereços IP residenciais, comerciais ou móveis.
  • O proxy de ISP é um endereço IP que é atribuído a um servidor alojado por um ISP. Os proxies de ISP são semelhantes aos proxies residenciais, com a diferença de que os seus endereços IP podem ser IPs residenciais ou empresariais. Isto torna-os uma boa opção para a raspagem de sítios que esperam uma mistura de tráfego residencial e comercial.
  • Os proxies móveis são endereços IP associados a hardware móvel (ou seja, smartphones ou tablets) que se ligam à Internet através de redes celulares. Os proxies móveis de Bright Data são virtualmente indetetáveis, simulando efetivamente as atividades de usuários móveis genuínos. São particularmente úteis quando é necessário certificar-se de que está a extrair conteúdo específico servido por sítios web e APIs móveis sem ser impedido de aceder aos dados a partir de um endereço IP não móvel.

Gestor de Proxy e APIs

Com tantas opções, gerir a sua utilização de proxy pode ser complicado. Felizmente, o Gestor de Proxy de Bright Data permite-lhe configurar e gerir facilmente os seus proxies, monitorizar a sua utilização e desempenho, e resolver quaisquer problemas.

Além disso, pode utilizar as APIs e integrações de Bright Data para integrar proxies no seu código sem problemas. A API do Navegador de Raspagem facilita a utilização de proxies a partir de ferramentas com as quais provavelmente está familiarizado (por exemplo, Playwright e Puppeteer), e o Desbloqueador da Web ajuda-o a ultrapassar bloqueios que normalmente impediriam o seu raspador de aceder a um sítio.

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. Também aprendeu sobre o serviço de proxy da Bright Data, que oferece uma variedade de tipos de proxy e funcionalidades para as suas necessidades de raspagem da web.

Usar um proxy da web com pedidos de busca no Node.js pode ajudá-lo a superar restrições de rede, aceder a conteúdo bloqueado geograficamente ou ocultar seu endereço IP. No entanto, o simples proxy usando node-fetch e https-proxy-agent pode não ser suficiente para alguns cenários de raspagem da web, especialmente se você precisar de anonimato, segmentação geográfica, rotação de IP ou outros recursos avançados. Nestes casos, deve considerar a utilização de um proxy da Bright Data.

Os serviços de proxy da Bright Data oferecem uma ampla gama de recursos que podem ajudá-lo a aceder a qualquer sítio ou API sem ser bloqueado ou restringido. Também pode escolher entre diferentes tipos de proxies, dependendo do seu caso de utilização e do seu orçamento. Para começar a usar o serviço de proxy da Bright Data, inscreva-se para obter um teste gratuito hoje mesmo.