Proxies HTTP y SOCKS en Axios para Node.js
Configura un proxy HTTP en el adaptador HTTP de Node de Axios, o usa un agente SOCKS cuando la IP seleccionada sea un punto de acceso SOCKS.
El adaptador HTTP de Node de Axios acepta un objeto de proxy HTTP con host y puerto numérico:
import axios from 'axios';
const response = await axios.get('https://example.com/', {
adapter: 'http',
proxy: {
protocol: 'http',
host: '203.0.113.10',
port: 8080,
},
timeout: 15000,
});
console.log(response.status);
Sustituye el punto de acceso de documentación por una entrada HTTP de tu servicio o de la lista de proxies HTTP. Los ejemplos usan Node; Axios en el navegador no puede seleccionar el proxy de red del navegador con estas opciones. El campo host recibe la dirección sin esquema de URL.
El campo protocol del objeto proxy describe su servicio de escucha. En Axios 1.21.0, el adaptador HTTP de Node usa CONNECT para un destino HTTPS y después negocia TLS con el origen a través del túnel. Versiones antiguas usaron otras rutas de proxy, por lo que importa la versión instalada.
Una URL SOCKS necesita un agente SOCKS
El objeto de proxy HTTP no selecciona SOCKS. Usa un agente compatible:
npm install [email protected] [email protected]
import axios from 'axios';
import { SocksProxyAgent } from 'socks-proxy-agent';
const agent = new SocksProxyAgent('socks5h://203.0.113.10:1080');
try {
const response = await axios.get('https://example.com/', {
adapter: 'http',
httpAgent: agent,
httpsAgent: agent,
proxy: false,
timeout: 15000,
});
console.log(response.status);
} finally {
agent.destroy();
}
proxy: false desactiva la gestión de proxy HTTP de Axios para la ruta que proporciona el agente SOCKS. Dar el agente para destinos HTTP y HTTPS cubre ambos esquemas. Aquí socks5h delega el DNS del destino en el lado SOCKS; el servidor elegido debe admitir ese protocolo.
Interpretar los fallos
Un error de Axios puede incluir una respuesta si el sitio devolvió un estado no satisfactorio. Si no la hay, revisa el código de error y los detalles de conexión. Un módulo ausente, un protocolo no admitido o una versión incompatible de Node pueden fallar antes de que una solicitud llegue al punto de acceso.
Para proxies HTTP autenticados, usa el campo auth del objeto proxy con las credenciales que da el operador. Los ajustes de autenticación del destino corresponden a otra parte.