Undici usmjerava zahtjev kroz dispatcher. Napravite ProxyAgent za odabrani 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();
}

Spremite program kao .mjs datoteku ili koristite projekt ES modula. Dokumentacijski IP zamijenite HTTP proxyjem s popisa 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 ovise o izdanju Undici paketa. Primjer koristi Undici 8.12.3, koji zahtijeva Node 22.19.0 ili noviji. Pogreš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 točku, zadržite agenta za taj posao i zatvorite ga kada posao završi. Stvaranje i zatvaranje agenta za svaki URL sprečava korisnu ponovnu uporabu veza.

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

Pogledajte odgovor i fazu neuspjeha

Fetch ne tretira svaki HTTP status pogreške kao odbijeni Promise. 403 ili 429 može biti stvarni odgovor stranice prenesen proxyjem. Pogreška veze ili tunela može, naprotiv, odbiti zahtjev prije postojanja objekta odgovora. Čitajte status odvojeno od pogreš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