Undici rutează o cerere printr-un dispatcher. Creați un ProxyAgent pentru proxy-ul HTTP ales și transmiteți-l apelului fetch în loc să schimbați dispatcherul global al întregului proces.

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

Salvați programul ca fișier .mjs sau folosiți un proiect cu module ES. Înlocuiți IP-ul de documentație cu un proxy HTTP din lista de proxy-uri HTTP. Importul folosește intenționat implementarea fetch din Undici, deci opțiunea dispatcher aparține clientului arătat.

Verificați compatibilitatea Node înainte de a învinui IP-ul

Versiunile Node acceptate de Undici depind de ediția pachetului. Exemplul folosește Undici 8.12.3 care cere Node 22.19.0 sau ulterior. O eroare de încărcare a modulului ori versiune a motorului apare înainte ca cererea să ajungă la proxy. Verificați cerințele pachetului instalat, nu presupuneți că orice Node rulează cel mai nou Undici.

Un agent poate servi cereri repetate

Programul scurt își închide dispatcherul la final. Dacă aplicația activă trimite mai multe cereri prin același punct, păstrați agentul pentru acea sarcină și închideți-l la sfârșitul lucrului. Crearea și închiderea unui agent pentru fiecare URL împiedică reutilizarea utilă a conexiunilor.

Un dispatcher global este potrivit doar când intenționați schimbarea mai largă. Transmiterea explicită ajută la testarea unui IP fără schimbarea cererilor de ieșire ale altui component.

Priviți răspunsul și etapa eșecului

Fetch nu tratează orice stare HTTP de eroare ca Promise respinsă. 403 sau 429 poate fi un răspuns real al site-ului transportat prin proxy. O eroare de conexiune sau tunel poate respinge cererea înainte să existe un obiect răspuns. Citiți starea separat de erorile aruncate de apel.

Dacă e necesară autentificarea, ProxyAgent din Undici oferă opțiuni la constructor. Nu adăugați un antet de autorizare proxy în antetele cererii către site; agentul gestionează un alt segment al conexiunii.

Articole similare