Uporabite IP proxyja z Undici v Node
Dodelite Undici ProxyAgent eni zahtevi fetch in ločite njegov nabor povezav od drugega prometa Node.
Undici usmerja zahtevo skozi dispatcher. Ustvarite ProxyAgent za izbrani HTTP proxy in ga podajte klicu fetch namesto spremembe globalnega dispatcherja celotnega 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();
}
Program shranite kot datoteko .mjs ali uporabite projekt modulov ES. Dokumentacijski IP zamenjajte s HTTP proxyjem s seznama proxyjev HTTP. Uvoz namerno uporablja izvedbo fetch iz Undici, zato možnost dispatcher pripada prikazanemu odjemalcu.
Pred obtoževanjem IP preverite združljivost Node
Podprte različice Node so odvisne od izdaje Undici. Primer uporablja Undici 8.12.3, ki zahteva Node 22.19.0 ali novejši. Napaka nalaganja modula ali različice pogona nastane pred prihodom zahteve do proxyja. Preverite zahteve nameščenega paketa, ne predpostavljajte, da vsak Node izvaja najnovejši Undici.
En agent lahko obsluži ponovljene zahteve
Kratek program na koncu zapre dispatcher. Če aplikacija pošilja več zahtev skozi isto točko, ohranite agenta za to obremenitev in ga zaprite ob njenem koncu. Ustvarjanje in zapiranje agenta za vsak URL preprečuje koristno ponovno uporabo povezav.
Globalni dispatcher je primeren samo za namerno širšo spremembo. Izrecno podajanje olajša test IP proxyja brez spremembe odhodnih zahtev druge komponente.
Glejte odgovor in fazo napake
Fetch ne obravnava vsakega napakovnega HTTP stanja kot zavrnjen Promise. 403 ali 429 je lahko pravi odgovor strani, prenesen prek proxyja. Napaka povezave ali predora lahko nasprotno zavrne zahtevo pred nastankom objekta odgovora. Stanje berite ločeno od napak, ki jih vrže klic.
Če je potrebno preverjanje pristnosti, ProxyAgent Undici ponuja možnosti v konstruktorju. Ne dodajajte avtorizacijske glave proxyja med glave zahteve spletišča; agent upravlja drug odsek povezave.