Ir al contenido
GProxy
Registro
Гайды 5 min de lectura 112 vistas

Usando Proxies en Node.js

Explora proxies de Node.js para Axios, Puppeteer y Playwright. Mejora el web scraping y la automatización con integración segura de GProxy.

Usando Proxies en Node.js

Un proxy HTTP es un servidor intermediario que se sitúa entre su aplicación Node.js y el servidor de destino, reenviando solicitudes y respuestas. El uso de proxies en Node.js con librerías como axios, Puppeteer y Playwright le permite enmascarar su dirección IP, eludir restricciones geográficas, equilibrar la carga de solicitudes y extraer datos de sitios web de forma más eficaz. Este artículo proporciona ejemplos prácticos de cómo configurar estas librerías para usar proxies.

Configuración de Proxies con Axios

Axios es un popular cliente HTTP basado en promesas para Node.js. Configurar un proxy con Axios es sencillo utilizando la opción de configuración proxy.

Configuración Básica de Proxy

La opción proxy acepta un objeto con propiedades como host, port, username y password.

const axios = require('axios');

async function fetchData() {
  try {
    const response = await axios.get('https://api.example.com/data', {
      proxy: {
        host: 'your_proxy_host',
        port: 8080,
        username: 'your_username', // Optional
        password: 'your_password'  // Optional
      }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Error fetching data:', error);
  }
}

fetchData();

Reemplace your_proxy_host y 8080 con su host y puerto de proxy reales. Si su proxy requiere autenticación, proporcione el username y password.

Uso de Variables de Entorno

Para mayor seguridad y mantenibilidad, es mejor almacenar las credenciales del proxy en variables de entorno.

const axios = require('axios');

async function fetchData() {
  try {
    const proxyHost = process.env.PROXY_HOST;
    const proxyPort = process.env.PROXY_PORT;
    const proxyUsername = process.env.PROXY_USERNAME;
    const proxyPassword = process.env.PROXY_PASSWORD;

    const response = await axios.get('https://api.example.com/data', {
      proxy: {
        host: proxyHost,
        port: parseInt(proxyPort), // Ensure port is an integer
        username: proxyUsername,
        password: proxyPassword
      }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Error fetching data:', error);
  }
}

fetchData();

Asegúrese de establecer las variables de entorno antes de ejecutar el script. Por ejemplo, en su terminal:

export PROXY_HOST=your_proxy_host
export PROXY_PORT=8080
export PROXY_USERNAME=your_username
export PROXY_PASSWORD=your_password
node your_script.js

Manejo de Proxies HTTPS

Para proxies HTTPS, asegúrese de que su proxy admita el método CONNECT. Axios maneja los proxies HTTPS sin problemas con la misma configuración.

Configuración de Proxies con Puppeteer

Puppeteer es una librería de Node.js que proporciona una API de alto nivel para controlar Chrome o Chromium sin interfaz gráfica. El uso de proxies con Puppeteer es crucial para tareas de web scraping y automatización donde necesita evitar bloqueos de IP o acceder a contenido restringido geográficamente.

Lanzamiento de Puppeteer con un Proxy

Puede configurar un proxy al iniciar Puppeteer utilizando el argumento de lanzamiento --proxy-server.

const puppeteer = require('puppeteer');

async function scrapeWebsite() {
  const browser = await puppeteer.launch({
    args: [
      `--proxy-server=http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}`
    ]
  });

  const page = await browser.newPage();
  await page.goto('https://www.example.com');
  console.log(await page.title());

  await browser.close();
}

scrapeWebsite();

Reemplace process.env.PROXY_HOST y process.env.PROXY_PORT con su host y puerto de proxy. Tenga en cuenta que este ejemplo asume un proxy HTTP; para proxies HTTPS, use https:// en el argumento --proxy-server.

Proxies Autenticados con Puppeteer

Puppeteer no admite directamente la autenticación de nombre de usuario y contraseña a través de argumentos de lanzamiento. Debe manejar la autenticación dentro del contexto de la página.

const puppeteer = require('puppeteer');

async function scrapeWebsite() {
  const browser = await puppeteer.launch({
    args: [
      `--proxy-server=http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}`
    ]
  });

  const page = await browser.newPage();

  // Authenticate with the proxy using page.authenticate
  await page.authenticate({
    username: process.env.PROXY_USERNAME,
    password: process.env.PROXY_PASSWORD,
  });


  await page.goto('https://www.example.com');
  console.log(await page.title());

  await browser.close();
}

scrapeWebsite();

El método page.authenticate() proporciona las credenciales necesarias al servidor proxy. Este método debe llamarse antes de navegar a la página de destino.

Consideraciones sobre Proxy por Solicitud

Puppeteer aplica la configuración del proxy globalmente para toda la instancia del navegador. Si necesita diferentes proxies para diferentes solicitudes, deberá iniciar varias instancias del navegador, cada una configurada con un proxy diferente. Alternativamente, considere usar una librería que intercepte las solicitudes y aplique la configuración del proxy por solicitud (menos común, más compleja).

Configuración de Proxies con Playwright

Playwright es otra potente librería de Node.js para la automatización del navegador y las pruebas de extremo a extremo. Al igual que Puppeteer, admite la configuración de proxies para sus instancias de navegador.

Lanzamiento de Playwright con un Proxy

Playwright ofrece una forma más directa de configurar proxies en comparación con Puppeteer, utilizando la propiedad proxy en las opciones de launch.

const { chromium } = require('playwright');

async function scrapeWebsite() {
  const browser = await chromium.launch({
    proxy: {
      server: `http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}`,
      username: process.env.PROXY_USERNAME,
      password: process.env.PROXY_PASSWORD,
    }
  });

  const page = await browser.newPage();
  await page.goto('https://www.example.com');
  console.log(await page.title());

  await browser.close();
}

scrapeWebsite();

Este enfoque es más limpio y explícito, ya que admite directamente la autenticación de nombre de usuario y contraseña dentro de la configuración del proxy.

Proxy por Contexto

Playwright admite contextos de navegador, lo que permite sesiones de navegación aisladas dentro de una única instancia de navegador. Cada contexto puede tener su propia configuración de proxy. Esto es útil para ejecutar tareas paralelas, cada una con un proxy diferente.

const { chromium } = require('playwright');

async function scrapeWebsite() {
  const browser = await chromium.launch();

  const context = await browser.newContext({
      proxy: {
        server: `http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}`,
        username: process.env.PROXY_USERNAME,
        password: process.env.PROXY_PASSWORD,
      }
  });

  const page = await context.newPage();
  await page.goto('https://www.example.com');
  console.log(await page.title());

  await browser.close();
}

scrapeWebsite();

Tabla Comparativa: Configuración de Proxy

Característica Axios Puppeteer Playwright
Configuración Opción proxy en la configuración de la solicitud Argumento de lanzamiento --proxy-server, page.authenticate() Opción proxy en launch o newContext
Autenticación username y password en proxy page.authenticate() username y password en proxy
Soporte HTTPS Sí, misma configuración que HTTP Sí, usar https:// en --proxy-server Sí, misma configuración que HTTP
Proxy por Solicitud No, global para la instancia de Axios No, global para la instancia del navegador Sí, usando contextos de navegador

Mejores Prácticas

  • Usar Variables de Entorno: Almacene las credenciales del proxy en variables de entorno para evitar codificarlas directamente en su código.
  • Manejar Errores: Implemente el manejo de errores para gestionar elegantemente los problemas de conexión del proxy.
  • Rotar Proxies: Para el web scraping, rote los proxies con frecuencia para evitar bloqueos de IP. Considere usar un pool de proxies.
  • Pruebe su Configuración: Verifique que su proxy funciona correctamente comprobando su dirección IP a través del proxy. Utilice sitios web como whatismyipaddress.com{rel="nofollow"}.
  • Proxies Seguros: Utilice proxies seguros (HTTPS o SOCKS5) para cifrar su tráfico.
  • Consideraciones Legales: Asegúrese de que sus actividades de web scraping cumplan con los términos de servicio del sitio web de destino y todas las leyes aplicables.

Conclusión

Configurar proxies en Node.js con librerías como axios, Puppeteer y Playwright es esencial para diversas tareas, incluyendo el web scraping, la elusión de restricciones geográficas y la mejora de la privacidad. Cada librería ofrece diferentes enfoques para la configuración del proxy, siendo Playwright el que proporciona el método más flexible y directo, especialmente para proxies autenticados y configuraciones por contexto. Siguiendo las mejores prácticas descritas en este artículo, podrá utilizar eficazmente los proxies en sus aplicaciones Node.js.

Actualizado: 26.01.2026
Volver a la categoría

Pruebe nuestros proxies

20,000+ proxies en 100+ países del mundo

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.