Cómo usar proxies con node-fetch

Aprenda a configurar un proxy en Node-Fetch siguiendo esta guía paso a paso.
10 min read
How to Set a Proxy in Node-Fetch blog image

Node.js es un popular entorno de ejecución JavaScript que permite crear aplicaciones de red y del lado del servidor. Por ejemplo, si necesita obtener datos de una API remota o de un sitio web en Node.js, puede utilizar un servidor proxy web que actúe como intermediario entre su aplicación e Internet. Esto permite eludir las restricciones de red, acceder a contenidos geobloqueados y ocultar su dirección IP.

La mayoría de las aplicaciones JavaScript modernas utilizan la API Fetch para realizar peticiones HTTP. Está disponible en los navegadores web como una característica integrada, y desde Node.js v16, está disponible sin ninguna dependencia externa. Sin embargo, hay un detalle: la funcionalidad fetch integrada en Node.js refleja lo que está disponible en los navegadores web y no se puede trabajar con proxies.

Afortunadamente, existe una solución sencilla: la biblioteca node-fetch. Esta librería incluye una API Fetch para Node.js que añade funcionalidad adicional específica de Node.js, incluyendo la capacidad de trabajar con agentes HTTP de Node.js. Un agente HTTP es una herramienta que gestiona la agrupación de conexiones, permitiendo reutilizar conexiones para peticiones HTTP. Esto significa que se puede usar un agente HTTP para configurar sus peticiones fetch a medida que pasan por el proxy.

En este artículo, aprenderá a utilizar node-fetch junto con la https-proxy-agent para crear un agente HTTP que soporte proxies HTTP y HTTPS. También aprenderá sobre el servicio proxy de Bright Data, que ofrece una variedad de tipos de proxy y características para sus necesidades de raspado web.

Cómo utilizar un proxy con node-fetch

Antes de comenzar este tutorial, es necesario cumplir los siguientes requisitos previos:

  • Una instalación de Node.js en funcionamiento.
  • Acceso a un proxy web. Alternativamente, para propósitos de prueba, puede configurar su propio proxy web utilizando Node.js.

Una vez que se cumplan estos requisitos, se puede empezar.

Crear un proyecto Node.js

Lo primero que es necesario hacer es crear un proyecto Node.js e inicializarlo con npm. Para ello, abra una terminal y ejecuta los siguientes comandos:

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

Este comando crea una carpeta llamada node-fetch-proxy, navega hasta ella y crea un archivo package.json con algunos valores por defecto.

Instalar node-fetch y https-proxy-agent

A continuación, es necesario instalar las librerías node-fetch y https-proxy-agent como dependencias para su proyecto con el siguiente comando:

npm install –-save node-fetch https-proxy-agent

Este comando instala las bibliotecas en la carpeta node_modules del proyecto y actualiza el archivo package.json en consecuencia.

Utilizar HttpsProxyAgent y node-fetch para realizar llamadas HTTP a través de un proxy

Después de instalar node-fetch y bibliotecas https-proxy-agent, es necesario utilizar la clase HttpsProxyAgent de la biblioteca https-proxy-agent junto con la función fetch de la biblioteca node-fetch para realizar llamadas HTTP a través de un proxy. Para ello, es necesario crear un archivo llamado proxy.mjs en la carpeta de tu proyecto y añade el siguiente 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 realiza las siguientes acciones:

  • Importa la función fetch de la librería node-fetch, que proporciona una API Fetch compatible con navegadores para Node.js.
  • Importa la clase HttpsProxyAgent de la librería https-proxy-agent, que crea un agente HTTP compatible con proxies HTTPS.
  • Crea una instancia de HttpsProxyAgent con tu URL proxy. Es necesario reemplazar <proxy_url> con la URL real del proxy, que debe tener el siguiente formato: http://username:password@host:port.
  • Utiliza la función fetch con la opción agent para hacer una petición HTTP a través del proxy. Es necesario reemplazar <target_url> por la URL que desea solicitar, que puede ser cualquier HTTP o URL HTTPS válida.
  • Maneja la respuesta e imprime cualquier error que se produzca.

Guarde el código y ejecute el comando a continuación:

node proxy.mjs

Este comando ejecuta su código y hace una petición HTTP a través del proxy. Deberías ver el texto de respuesta o cualquier error en tu terminal.

Limitaciones del uso de un proxy con node-fetch

Mientras que este enfoque funciona bien cuando se utiliza un proxy simple, encontrará que muchos casos de uso en el mundo real, como el raspado web, requieren un enfoque más sofisticado. Muchos sitios web y API web bloquean las direcciones IP de proxies conocidos, lo que dificulta la recopilación de los datos que es necesario.

Además, los sitios pueden tener restricciones geográficas que ocultan contenidos a los visitantes en función de su ubicación. Por ejemplo, algunos periódicos estadounidenses bloquean a los visitantes europeos de sus sitios web debido a las dificultades para cumplir con el Reglamento General de Protección de Datos (GDPR) y la Directiva sobre la privacidad y las comunicaciones electrónicas.

Afortunadamente, los proxies más sofisticados, como los que ofrece el servicio de proxy de Bright Data, proporcionan varios tipos de proxies que ayudan a los usuarios a trabajar en torno a estas limitaciones.

Servicio proxy de Bright Data

Si busca un servicio proxy fiable y escalable para el raspado web, no busque más. Bright Data es un proveedor líder de soluciones proxy, que ofrece más de 72 millones de direcciones IP en 195 países, con un tiempo de actividad del 99.9 por ciento.

Con los servidores proxy de Bright Data, puede elegir entre diferentes tipos de proxies, como proxies residenciales, de centro de datos, de proveedor de servicios de Internet (ISP), celulares o súper proxies, en función de su caso de uso y presupuesto. Esta gama de opciones es útil cuando se crea un raspador web que necesita obtener contenido de sitios que bloquean direcciones IP proxy conocidas.

En lugar de confiar en un proxy genérico que se ejecuta en una ubicación que no puede controlar, los proxies de Bright Data le permiten elegir el tipo de proxy que mejor se adapte al tipo de usuario que suele acceder al contenido que está intentando raspar. También puede acceder a funciones avanzadas, como la orientación geográfica, la rotación de IP y el control de sesiones, que garantizan que su aplicación no se bloquee.

Tipos de proxy de Bright Data

Bright Data ofrece diferentes tipos de proxies para diferentes escenarios de raspado web. A continuación se muestran algunos de los proxies que ofrecen:

  • El proxy residencial canaliza sus consultas de Internet a través de dispositivos genuinos, como ordenadores personales o portátiles, que están conectados a la web a través de un ISP residencial. Estos proxies destacan en las actividades de raspado web porque se mezclan con los usuarios normales, lo que reduce la posibilidad de que sus peticiones proxy sean bloqueadas.
  • Los servidores proxy actúan como pasarela y le permiten acceder a la amplia red de proxies residenciales de Bright Data. Con una única URL de super proxy, puede conectarse a cualquier proxy residencial sin necesidad de designar una dirección IP concreta. Además, el super proxy ofrece la flexibilidad de ajustar múltiples parámetros, incluyendo la selección del país, ciudad, ISP o ASN del proxy residencial que desee emplear.
  • El proxy de centro de datos utiliza una dirección IP asignada a un servidor situado en un centro de datos. Los proxies de centros de datos son propensos a la detección y posterior bloqueo por parte de sitios web y API, pero siguen siendo útiles para las aplicaciones que acceden a datos de URL que no intentan bloquear las solicitudes de proxy. Son más apropiados para proyectos de raspado web en los que no es necesario que el tráfico provenga de direcciones IP residenciales, comerciales o celulares.
  • El proxy ISP es una dirección IP asignada a un servidor alojado por un ISP. Los proxies ISP son similares a los proxies residenciales, con la diferencia de que sus direcciones IP pueden ser residenciales o comerciales. Esto los convierte en una buena opción cuando se rastrean sitios que esperan una mezcla de tráfico residencial y empresarial.
  • Los proxies celulares son direcciones IP vinculadas a hardware móvil (es decir, teléfonos inteligentes o tabletas) que se conectan a Internet a través de redes celulares. Los proxies celulares de Bright Data son prácticamente indetectables y simulan con eficacia las actividades de los usuarios celulares reales. Son especialmente útiles cuando es necesario asegurarse de que se está raspando contenido específico servido por sitios web celulares y API sin que se bloquee el acceso a los datos desde una dirección IP no móvil.

Gestor de proxy y API

Con tantas opciones, gestionar el uso del proxy puede ser complicado. Afortunadamente, el Gestor de Proxy de Bright Data le permite configurar y gestionar fácilmente sus proxies, supervisar su uso y rendimiento y solucionar cualquier problema.

Además, puede utilizar las APIs e integraciones de Bright Data para integrar proxies en su código sin problemas. La API Scraping Browser facilita el uso de proxies desde herramientas con las que probablemente esté familiarizado (por ejemplo, Playwright y Puppeteer), y Web Unlocker le ayuda a superar los bloqueos que normalmente impedirían a su scraper acceder a un sitio.

Conclusión

En este artículo hemos demostrado cómo utilizar la librería node-fetch con la librería https-proxy-agent para crear un agente HTTP que soporte proxies HTTPS. También abordamos el servicio proxy de Bright Data, que ofrece una variedad de tipos de proxy y características para sus necesidades de raspado web.

El uso de un proxy web con solicitudes fetch en Node.js puede ayudar a superar restricciones de red, acceder a contenido geobloqueado u ocultar direcciones IP. Sin embargo, el simple proxy usando node-fetch y https-proxy-agent puede no ser suficiente para algunos escenarios de raspado web, especialmente si se necesita anonimato, geo-targeting, rotación de IP, u otras características avanzadas. En estos casos, debería considerar el uso de un proxy de Bright Data.

Los servicios proxy de Bright Data ofrecen una amplia gama de características que pueden ayudar a acceder a cualquier sitio web o API sin bloqueos o restricciones. También se puede elegir entre diferentes tipos de proxies en función de cada caso de uso y presupuesto. Para empezar a utilizar el servicio proxy de Bright Data, suscríbase a una prueba gratuita hoy mismo.