Integraciones · Principiante

Cómo usar proxies en Node.js con fetch, undici, axios y got

En versiones compatibles de Node.js, NODE_USE_ENV_PROXY=1 activa HTTP_PROXY, HTTPS_PROXY y NO_PROXY para fetch integrado; --use-env-proxy está disponible en Node.js 22.21+ y 24.5+. Otra opción es configurar ProxyAgent o EnvHttpProxyAgent de undici. Las bibliotecas con transporte o agentes propios requieren configuración y pruebas independientes.

2 minutos de lectura 6 secciones Revisado Equipo editorial Proxy Cyber

Búsqueda y búsqueda integradas#

Nodo global fetch es undici. Dale un ProxyAgent por solicitud con el dispatcher opción, o configurarla globalmente una vez con setGlobalDispatcher.

undici
import { fetch, ProxyAgent, setGlobalDispatcher } from "undici";

const proxy = new ProxyAgent("http://USER-cc-us:PASS@res.proxy-cyber.com:9000");

// Per request
const res = await fetch("https://api.ipify.org", { dispatcher: proxy });
console.log(await res.text());

// Or globally, for every fetch in the process
setGlobalDispatcher(proxy);

A ProxyAgent agrupa conexiones, por lo que las solicitudes consecutivas pueden reutilizar una conexión y, por lo tanto, una salida. Para una nueva salida por solicitud, cree el agente con pipelining: 0 y connections: 1, o simplemente usar un diferente -sid- por sesión lógica.

axios#

propio de axios proxy la opción no hace un túnel HTTPS de manera confiable; El enfoque estándar es un agente de https-proxy-agent y proxy: false.

axios
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";

const agent = new HttpsProxyAgent("http://USER-cc-de-city-berlin-sid-cart42-ttl-15m:PASS@res.proxy-cyber.com:9000");
const client = axios.create({ httpsAgent: agent, httpAgent: agent, proxy: false, timeout: 30000 });

const { data } = await client.get("https://api.ipify.org");
console.log(data);

tengo#

tengo
import got from "got";
import { HttpsProxyAgent } from "https-proxy-agent";

const agent = new HttpsProxyAgent("http://USER-cc-us:PASS@res.proxy-cyber.com:9000");
const body = await got("https://api.ipify.org", { agent: { https: agent, http: agent }, timeout: { request: 30000 } }).text();
console.log(body);

CALCETINES5#

calcetines-agente-proxy
import fetch from "node-fetch";
import { SocksProxyAgent } from "socks-proxy-agent";

const agent = new SocksProxyAgent(process.env.PROXY_URL);
const response = await fetch("https://api.ipify.org", { agent });
console.log(await response.text());

Variables ambientales#

undici no lee HTTPS_PROXY por defecto. Se envían versiones recientes de undici EnvHttpProxyAgent, que hace; configúrelo como el despachador global y todo el proceso, incluidas las bibliotecas de terceros creadas en fetch, pasa por el proxy.

EnvHttpProxyAgent
import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
// HTTPS_PROXY=http://USER-cc-us:PASS@res.proxy-cyber.com:9000 NO_PROXY=localhost node app.js
setGlobalDispatcher(new EnvHttpProxyAgent());

Concurrencia y rotación#

  • uno ProxyAgent por sesión fija (diferentes -sid-), compartido por todas las solicitudes de esa sesión.
  • Para una rotación amplia, mantenga un agente pero deshabilite la reutilización de conexiones, o ejecute N agentes con N identificadores de sesión y realice una operación por turnos.
  • ver UND_ERR_SOCKET y ECONNRESET: desapareció una salida residencial; Vuelva a intentarlo una vez, la siguiente conexión elige otra.

Preguntas que hace la gente#

¿Por qué axios ignora mi proxy para HTTPS?

Su soporte de proxy integrado está limitado para túneles CONNECT. Utilice https-proxy-agent como httpsAgent y configure proxy: false para que axios no intente manejarlo por sí mismo.

¿Puedo representar solo algunas solicitudes?

Sí. Pasar al despachador o agente las solicitudes que lo necesiten y dejar las demás intactas; nada es global a menos que llames a setGlobalDispatcher.

tu cuenta

Gestiona tus proxies en una sola cuenta

Compare redes, realice pedidos y siga su saldo y solicitudes de soporte desde un solo panel. Nuestro equipo revisa los pagos y proporciona detalles de conexión después de la entrega.

Crear cuenta