Undici smeruje požiadavku cez dispatcher. Vytvorte ProxyAgent pre vybrané HTTP proxy a odovzdajte ho volaniu fetch namiesto zmeny globálneho dispatchera celého procesu.

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

Uložte program ako súbor .mjs alebo použite projekt ES modulov. Dokumentačnú IP nahraďte HTTP proxy zo zoznamu HTTP proxy. Import zámerne používa implementáciu fetch z Undici, takže voľba dispatcher patrí zobrazenému klientovi.

Pred obvinením IP overte kompatibilitu Node

Podporované verzie Node závisia od vydania Undici. Príklad používa Undici 8.12.3, ktoré vyžaduje Node 22.19.0 alebo novší. Chyba načítania modulu či verzie enginu nastane pred dosiahnutím proxy. Overte požiadavky nainštalovaného balíka namiesto predpokladu, že každý Node spustí najnovšie Undici.

Jeden agent môže obslúžiť opakované požiadavky

Krátky program na konci dispatcher zavrie. Ak aplikácia posiela viac požiadaviek cez rovnaký bod, ponechajte agenta pre túto záťaž a zavrite ho po jej skončení. Vytváranie a zatváranie agenta pre každé URL bráni užitočnému opätovnému využitiu spojení.

Globálny dispatcher sa hodí len pri zamýšľanej širšej zmene. Výslovné odovzdanie uľahčuje test IP proxy bez zmeny odchádzajúcich požiadaviek iného komponentu.

Sledujte odpoveď a fázu zlyhania

Fetch nepovažuje každý chybový HTTP stav za odmietnutý Promise. 403 alebo 429 môže byť skutočná odpoveď webu prenesená cez proxy. Chyba spojenia alebo tunela naopak môže odmietnuť požiadavku pred vznikom objektu odpovede. Čítajte stav oddelene od chýb vyvolaných volaním.

Ak je nutná autentifikácia, ProxyAgent Undici ponúka voľby v konštruktore. Nepridávajte autorizačnú hlavičku proxy medzi hlavičky požiadavky na web; agent obsluhuje iný úsek spojenia.

Súvisiace články