Undici usmjerava zahtjev kroz dispatcher. Napravite ProxyAgent za izabrani HTTP proxy i proslijedite ga fetch pozivu umjesto mijenjanja globalnog dispatchera cijelog procesa.

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

Sačuvajte program kao .mjs datoteku ili koristite projekt ES modula. Dokumentacijski IP zamijenite HTTP proxyjem s liste HTTP proxyja. Uvoz namjerno koristi Undicijevu fetch implementaciju, pa opcija dispatcher pripada prikazanom klijentu.

Provjerite kompatibilnost Nodea prije nego okrivite IP

Podržane verzije Nodea zavise od izdanja Undici paketa. Primjer koristi Undici 8.12.3, koji zahtijeva Node 22.19.0 ili noviji. Greška učitavanja modula ili verzije izvršnog okruženja nastaje prije nego zahtjev stigne do proxyja. Provjerite zahtjeve instaliranog paketa, ne pretpostavljajte da svaki Node pokreće najnoviji Undici.

Jedan agent može služiti ponovljenim zahtjevima

Kratki program zatvara dispatcher na kraju. Ako aktivna aplikacija šalje više zahtjeva kroz istu tačku, zadržite agenta za taj posao i zatvorite ga kada posao završi. Pravljenje i zatvaranje agenta za svaki URL sprečava korisnu ponovnu upotrebu veza.

Globalni dispatcher odgovara samo kada namjeravate širu promjenu. Izričito prosljeđivanje olakšava test proxy IP-a bez promjene izlaznih zahtjeva druge komponente.

Pogledajte odgovor i fazu neuspjeha

Fetch ne tretira svaki HTTP status greške kao odbijeni Promise. 403 ili 429 može biti stvarni odgovor stranice prenesen proxyjem. Greška veze ili tunela može, naprotiv, odbiti zahtjev prije postojanja objekta odgovora. Čitajte status odvojeno od grešaka koje poziv izbacuje.

Ako je potrebna autentifikacija, Undicijev ProxyAgent ima opcije u konstruktoru. Ne dodajte zaglavlje proxy autorizacije zaglavljima zahtjeva stranice; agent obrađuje drugi dio veze.

Povezani članci