Undici enruta una petición mediante un dispatcher. Crea un ProxyAgent para el proxy HTTP elegido y pásalo a la llamada fetch en lugar de cambiar el dispatcher global de todo el proceso.

npm install [email protected]
import { fetch, ProxyAgent } from 'undici';

const dispatcher = new ProxyAgent('http://203.0.113.10:8080');

try {
  const response = await fetch('https://example.com/', {
    dispatcher,
    signal: AbortSignal.timeout(15000),
  });

  console.log(response.status);
  console.log(await response.text());
} finally {
  await dispatcher.close();
}

Guarda el programa como archivo .mjs o usa un proyecto de módulos ES. Sustituye la IP de documentación por un proxy HTTP de la lista de proxies HTTP. La importación usa deliberadamente el fetch de Undici, por lo que la opción dispatcher pertenece al cliente del ejemplo.

Comprueba la compatibilidad de Node antes de culpar a la IP

Las versiones de Node admitidas por Undici dependen de la versión del paquete. Este ejemplo usa Undici 8.12.3, que exige Node 22.19.0 o posterior. Un error de carga del módulo o de versión del motor ocurre antes de llegar al proxy. Comprueba los requisitos del paquete instalado, sin suponer que cualquier Node ejecuta el Undici más reciente.

Un agente puede atender peticiones repetidas

El programa breve cierra el dispatcher al terminar. Si una aplicación activa envía varias peticiones por el mismo punto, conserva el agente para esa carga de trabajo y ciérralo cuando termine. Crear y cerrar un agente por cada URL impide reutilizar bien las conexiones.

Un dispatcher global solo es adecuado si pretendes ese cambio más amplio. Pasarlo explícitamente facilita probar una IP sin alterar las peticiones salientes de otro componente.

Mira la respuesta y la fase del fallo

Fetch no convierte todo estado de error HTTP en una promesa rechazada. Un 403 o 429 puede ser una respuesta real del sitio transportada por el proxy. Un error de conexión o de túnel puede rechazar la petición antes de que exista un objeto respuesta. Lee el estado por separado de los errores que lanza la llamada.

Si hace falta autenticación, ProxyAgent de Undici ofrece opciones en el constructor. No añadas una cabecera de autorización del proxy a las cabeceras de la petición al sitio; el agente gestiona otro salto de conexión.

Artículos relacionados