Undici encamina una petició mitjançant un dispatcher. Creeu un ProxyAgent per al proxy HTTP triat i passeu-lo a la crida fetch en lloc de canviar el dispatcher global de tot el procés.

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();
}

Deseu el programa com a fitxer .mjs o utilitzeu un projecte de mòduls ES. Substituïu la IP de documentació per un proxy HTTP de la llista de proxys HTTP. La importació utilitza deliberadament el fetch d’Undici; per tant, l’opció dispatcher pertany al client de l’exemple.

Comproveu la compatibilitat de Node abans de culpar la IP

Les versions de Node admeses per Undici depenen de la versió del paquet. L’exemple fa servir Undici 8.12.3, que exigeix Node 22.19.0 o posterior. Un error de càrrega del mòdul o de versió del motor passa abans d’arribar al proxy. Comproveu els requisits del paquet instal·lat, sense suposar que qualsevol Node executa l’Undici més recent.

Un agent pot servir peticions repetides

El programa breu tanca el dispatcher en acabar. Si una aplicació activa envia diverses peticions pel mateix punt, conserveu l’agent per a aquella càrrega de treball i tanqueu-lo quan acabi. Crear i tancar un agent per cada URL impedeix reutilitzar les connexions de manera útil.

Un dispatcher global només és adequat si voleu el canvi més ampli. Passar-lo explícitament facilita provar una IP de proxy sense alterar les peticions sortints d’un altre component.

Mireu la resposta i la fase de fallada

Fetch no tracta tot estat d’error HTTP com una promesa rebutjada. Un 403 o 429 pot ser una resposta real del lloc transportada pel proxy. Un error de connexió o de túnel pot rebutjar la petició abans que existeixi un objecte resposta. Llegiu l’estat separat dels errors que llança la crida.

Si cal autenticació, ProxyAgent d’Undici ofereix opcions al constructor. No afegiu una capçalera d’autorització del proxy a les capçaleres de la petició al lloc; l’agent gestiona un altre salt de connexió.

Articles relacionats