Ir al contenido

Cómo usar Proxies con Node.js Axios: Guía completa

TL;DR

Configura proxies de GProxy con Node.js Axios para HTTP requests. Cubre proxy configuration, HTTPS support, rotation patterns, y error handling.

Idioma: JavaScript

Requisitos previos

  • Node.js 16+ instalado
  • Axios instalado (npm install axios)
  • Cuenta de GProxy con plan de proxy activo
  • Conocimientos básicos de Node.js y async/await

Configuración paso a paso

1

Instalar Axios

Instalar Axios y soporte opcional SOCKS5

npm install axios
# For SOCKS5 support:
npm install socks-proxy-agent
2

Configurar HTTP proxy

Agregar proxy de GProxy a la configuración de solicitud de Axios

const axios = require('axios');

const response = await axios.get('https://httpbin.org/ip', {
  proxy: {
    host: 'proxy.gproxy.net',
    port: 1000,
    auth: { username: 'YOUR_USER', password: 'YOUR_PASS' }
  }
});
console.log(response.data);
3

Configurar SOCKS5 proxy

Usar socks-proxy-agent para soporte SOCKS5

const { SocksProxyAgent } = require('socks-proxy-agent');

const agent = new SocksProxyAgent('socks5://USER:PASS@proxy.gproxy.net:1001');
const response = await axios.get('https://httpbin.org/ip', {
  httpsAgent: agent, httpAgent: agent
});
4

Crear cliente reutilizable

Construir una instancia de Axios con valores proxy por defecto

const client = axios.create({
  proxy: {
    host: 'proxy.gproxy.net',
    port: 1000,
    auth: { username: 'YOUR_USER', password: 'YOUR_PASS' }
  },
  timeout: 30000
});

const data = await client.get('https://example.com');
5

Agregar interceptor de reintento

Manejar errores de proxy con reintento automático

client.interceptors.response.use(
  response => response,
  async error => {
    if (error.response?.status === 407 || error.code === 'ECONNRESET') {
      return client.request(error.config); // retry
    }
    throw error;
  }
);
6

Probar la configuración

Verificar que el proxy está enrutando correctamente

const res = await client.get('https://httpbin.org/ip');
console.log('Proxy IP:', res.data.origin);

Ejemplos de código

Axios básico con GProxy · javascript
const axios = require('axios');

async function main() {
  const response = await axios.get('https://httpbin.org/ip', {
    proxy: {
      host: 'proxy.gproxy.net',
      port: 1000,
      auth: {
        username: 'YOUR_USER',
        password: 'YOUR_PASS'
      }
    },
    timeout: 30000
  });

  console.log('Your proxy IP:', response.data.origin);
}

main().catch(console.error);
Solicitudes concurrentes con Rate Limiting · javascript
const axios = require('axios');
const pLimit = require('p-limit');

const limit = pLimit(10); // max 10 concurrent

const client = axios.create({
  proxy: {
    host: 'proxy.gproxy.net',
    port: 1000,
    auth: { username: 'USER', password: 'PASS' }
  },
  timeout: 30000
});

const urls = Array.from({ length: 100 }, (_, i) =>
  `https://example.com/page/${i + 1}`);

const results = await Promise.all(
  urls.map(url => limit(() =>
    client.get(url).then(r => ({ url, status: r.status }))
      .catch(e => ({ url, error: e.message }))
  ))
);

console.log(`Success: ${results.filter(r => r.status).length}`);
console.log(`Failed: ${results.filter(r => r.error).length}`);
Solicitudes con Geo-Targeting · javascript
const axios = require('axios');

async function fetchFromCountry(url, country) {
  const response = await axios.get(url, {
    proxy: {
      host: 'proxy.gproxy.net',
      port: 1000,
      auth: {
        username: `USER-country-${country}`,
        password: 'PASS'
      }
    }
  });
  return { country, data: response.data };
}

const countries = ['us', 'de', 'gb', 'jp', 'br'];
const results = await Promise.all(
  countries.map(c => fetchFromCountry('https://httpbin.org/ip', c))
);

results.forEach(r =>
  console.log(`${r.country}: ${r.data.origin}`));

¿Por qué usar proxies con Axios?

Axios es el cliente HTTP más popular para Node.js y navegadores, con más de 100 millones de descargas semanales en npm. Añadir proxies de GProxy a Axios permite la rotación de IP para el web scraping, el acceso a API desde diferentes ubicaciones y el manejo de solicitudes anónimas. Los más de 10M+ de IPs residenciales de GProxy y la cobertura en más de 150 países se integran perfectamente con la configuración de proxy de Axios.

Configuración básica de proxy

Axios admite proxies HTTP a través de su opción de configuración proxy integrada. Pase el host del proxy, el port y las credenciales de autenticación directamente en la configuración de la solicitud o como un valor predeterminado. Para objetivos HTTPS a través de un proxy HTTP, Axios maneja el túnel CONNECT automáticamente.

Soporte de proxy SOCKS5

Axios no admite SOCKS5 de forma nativa, pero puede añadirlo con el paquete socks-proxy-agent. Cree un agente SOCKS5 y páselo como el httpsAgent en su configuración de Axios. Esto funciona con los endpoints SOCKS5 de GProxy.

Interceptores de solicitudes para lógica de proxy

Los interceptores de Axios le permiten añadir lógica de rotación de proxy, reintentos en caso de fallos y registro (logging). Añada un interceptor de solicitud para asignar proxies dinámicamente y un interceptor de respuesta para manejar errores de proxy y reintentar con una IP diferente.

Solicitudes concurrentes

La naturaleza asíncrona de Node.js lo hace perfecto para solicitudes concurrentes con proxy. Use Promise.all() o p-limit para controlar la concurrencia. Cada solicitud a través del endpoint backconnect de GProxy obtiene una IP única, por lo que las solicitudes concurrentes rotan de forma natural.

Mejores prácticas para el manejo de errores

Los errores específicos del proxy necesitan un manejo especial: 407 significa fallo de autenticación, ECONNREFUSED significa que el proxy es inalcanzable y ETIMEDOUT significa que el proxy o el objetivo están lentos. Establezca timeouts adecuados e implemente una lógica de reintento con retroceso exponencial para la confiabilidad en producción.

Casos de uso

API Data Collection

Colecciona datos de APIs que imponen límites de tasa por IP utilizando proxies rotativos.

Price Monitoring Services

Construye microservicios de seguimiento de precios que consultan a minoristas desde diferentes ubicaciones.

Webhook Testing

Envía webhooks de prueba desde diferentes IPs para verificar los filtros de seguridad de tu aplicación.

Microservice Testing

Prueba tus propias APIs desde IPs externas para verificar las reglas de rate limiting y geo-blocking.

Consejos profesionales
Cree una instancia de Axios dedicada con valores predeterminados de proxy para un código limpio. Use p-limit para controlar la concurrencia y evitar saturar los servidores de destino. Agregue interceptores de respuesta para el reintento automático en errores de proxy. Establezca timeouts razonables (30s) para manejar conexiones de proxy lentas con elegancia.

FAQ

¿Soporta Axios SOCKS5 de forma nativa? +
No, pero puedes usar el paquete socks-proxy-agent para añadir soporte SOCKS5. Pasa el agent como httpsAgent en la configuración de Axios.
¿Cómo manejo los errores de autenticación del proxy? +
Captura los códigos de estado 407 en los interceptores de respuesta. Verifica tus credenciales de GProxy y comprueba que tu plan esté activo.
¿Puedo rotar proxies por cada solicitud? +
Sí. El endpoint de backconnect de GProxy asigna una nueva IP por conexión, por lo que cada solicitud de Axios obtiene automáticamente una IP diferente.
¿Funciona la configuración de proxy en navegadores? +
No, la configuración de proxy de Axios solo funciona en Node.js. Las solicitudes del navegador se realizan a través de la configuración de proxy del sistema o de la extensión.

¿Listo para empezar?

Comience con GProxy en minutos — proxies residenciales desde $0.85/GB, IPv6 desde $0.03/proxy, pago por uso.

Otras integraciones

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