Bruk en proxy-IP med Undici i Node
Knytt en Undici ProxyAgent til én fetch-forespørsel og hold tilkoblingsutvalget atskilt fra annen Node-trafikk.
Undici sender en forespørsel gjennom en dispatcher. Opprett en ProxyAgent for valgt HTTP-proxy og gi den til fetch-kallet i stedet for å endre hele prosessens globale 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();
}
Lagre programmet som en .mjs-fil eller bruk et ES-modulprosjekt. Bytt dokumentasjons-IP-en med en HTTP-proxy fra listen over HTTP-proxyer. Importen bruker bevisst Undicis fetch-implementasjon, så valget dispatcher tilhører klienten som vises.
Kontroller Node-kompatibilitet før du skylder på IP-en
Node-versjonene Undici støtter avhenger av pakkeutgaven. Eksemplet bruker Undici 8.12.3, som krever Node 22.19.0 eller nyere. Modulinnlastingsfeil eller feil motorversjon oppstår før forespørselen når proxyen. Kontroller kravet til den installerte pakken fremfor å anta at alle Node-versjoner kjører nyeste Undici.
Én agent kan håndtere gjentatte forespørsler
Det korte programmet lukker sin dispatcher til slutt. Sender en kjørende applikasjon flere forespørsler gjennom samme endepunkt, behold agenten for denne arbeidslasten og lukk den når arbeidet er ferdig. Å opprette og lukke en agent for hver URL hindrer nyttig gjenbruk av forbindelser.
En global dispatcher passer bare når du ønsker den bredere endringen. Å gi den uttrykkelig gjør det enklere å teste en proxy-IP uten å endre andre komponenters utgående forespørsler.
Se på svaret og feilfasen
Fetch behandler ikke alle HTTP-feilstatuser som et avvist Promise. En 403 eller 429 kan være et virkelig nettsidesvar transportert gjennom proxyen. En tilkoblings- eller tunnelfeil kan i stedet avvise forespørselen før et svarobjekt finnes. Les statusen atskilt fra feil som kallet kaster.
Hvis autentisering kreves, tilbyr Undicis ProxyAgent valg i konstruktøren. Ikke legg en proxyautorisasjonsheader til forespørselshodene for nettstedet; agenten håndterer et annet tilkoblingsledd.