Cómo usar Proxies con Node.js Axios: Guía completa
Configura proxies de GProxy con Node.js Axios para HTTP requests. Cubre proxy configuration, HTTPS support, rotation patterns, y error handling.
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
Instalar Axios
Instalar Axios y soporte opcional SOCKS5
npm install axios
# For SOCKS5 support:
npm install socks-proxy-agent
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);
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
});
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');
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;
}
);
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
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);
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}`);
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.
FAQ
¿Soporta Axios SOCKS5 de forma nativa? +
¿Cómo manejo los errores de autenticación del proxy? +
¿Puedo rotar proxies por cada solicitud? +
¿Funciona la configuración de proxy en navegadores? +
¿Listo para empezar?
Comience con GProxy en minutos — proxies residenciales desde $0.85/GB, IPv6 desde $0.03/proxy, pago por uso.
