Bruk ein proxy-IP med Undici i Node
Knyt ein Undici ProxyAgent til éin fetch-førespurnad og hald tilkoplingsutvalet skilt frå annan Node-trafikk.
Undici sender ein førespurnad gjennom ein dispatcher. Opprett ein ProxyAgent for vald HTTP-proxy og gi han til fetch-kallet i staden for å endre den globale dispatcheren for heile prosessen.
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 ei .mjs-fil eller bruk eit ES-modulprosjekt. Byt dokumentasjons-IP-en med ein HTTP-proxy frå lista over HTTP-proxyar. Importen brukar medvite Undici si fetch-implementering, så valet dispatcher høyrer til klienten som er vist.
Kontroller Node-kompatibilitet før du skuldar på IP-en
Node-versjonane Undici støttar kjem an på pakkeutgåva. Dømet brukar Undici 8.12.3, som krev Node 22.19.0 eller nyare. Feil ved modulinnlasting eller motorversjon oppstår før førespurnaden når proxyen. Kontroller kravet til den installerte pakken framfor å tru at alle Node-utgåver køyrer nyaste Undici.
Éin agent kan handtere gjentekne førespurnader
Det korte programmet lukkar dispatcheren til slutt. Sender ein køyrande applikasjon fleire førespurnader gjennom same endepunkt, hald på agenten for denne arbeidsmengda og lukk han når arbeidet er slutt. Å opprette og lukke ein agent for kvar URL hindrar nyttig gjenbruk av samband.
Ein global dispatcher passar berre når du ønskjer den breiare endringa. Å gi han uttrykkeleg gjer det lettare å teste ein proxy-IP utan å endre utgåande førespurnader frå andre komponentar.
Sjå på svaret og feilfasen
Fetch handsamar ikkje alle HTTP-feilstatusar som eit avvist Promise. Ein 403 eller 429 kan vere eit verkeleg nettsidesvar frakta gjennom proxyen. Ein tilkoplings- eller tunnelfeil kan i staden avvise førespurnaden før eit svarobjekt finst. Les statusen skild frå feil som kallet kastar.
Viss autentisering krevst, tilbyr Undici sin ProxyAgent val i konstruktøren. Ikkje legg ein proxyautorisasjonsheader i førespurnadshovuda for nettsida; agenten handterer eit anna tilkoplingsledd.