Undici nukreipia užklausą per dispatcher. Sukurkite ProxyAgent pasirinktam HTTP tarpiniam serveriui ir perduokite fetch iškvietimui, užuot keitę viso proceso globalų dispatcher.

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

Išsaugokite programą kaip .mjs failą arba naudokite ES modulių projektą. Dokumentacijos IP pakeiskite HTTP tarpiniu serveriu iš HTTP tarpinių serverių sąrašo. Importas sąmoningai naudoja Undici fetch įgyvendinimą, todėl dispatcher parinktis priklauso parodytam klientui.

Prieš kaltindami IP patikrinkite Node suderinamumą

Undici palaikomos Node versijos priklauso nuo paketo leidimo. Pavyzdys naudoja Undici 8.12.3, kuriam reikia Node 22.19.0 ar naujesnio. Modulio įkėlimo ar variklio versijos klaida atsiranda prieš užklausai pasiekiant tarpinį serverį. Tikrinkite įdiegto paketo reikalavimus, nemanykite, kad kiekvienas Node vykdo naujausią Undici.

Vienas agentas gali aptarnauti pakartotines užklausas

Trumpa programa pabaigoje uždaro dispatcher. Jei veikianti programa siunčia kelias užklausas per tą patį tašką, laikykite agentą tai užduočiai ir uždarykite darbui pasibaigus. Agento kūrimas ir uždarymas kiekvienam URL trukdo naudingai pakartotinai naudoti ryšius.

Globalus dispatcher tinka tik sąmoningam platesniam pakeitimui. Aiškus perdavimas palengvina proxy IP bandymą nekeičiant kito komponento išeinančių užklausų.

Žiūrėkite atsakymą ir nesėkmės etapą

Fetch nevertina kiekvienos HTTP klaidos būsenos kaip atmesto Promise. 403 ar 429 gali būti tikras svetainės atsakymas, perduotas per tarpinį serverį. Ryšio ar tunelio klaida gali atmesti užklausą prieš atsirandant atsakymo objektui. Būseną skaitykite atskirai nuo iškvietimo metamos klaidos.

Jei reikia autentifikavimo, Undici ProxyAgent turi konstruktoriaus parinktis. Nepridėkite tarpinio serverio autorizavimo antraštės prie svetainės užklausos antraščių; agentas tvarko kitą ryšio atkarpą.

Susiję straipsniai