Použijte IP proxy s Undici v Node
Přiřaďte Undici ProxyAgent jednomu požadavku fetch a oddělte jeho fond spojení od jiného provozu Node.
Undici směruje požadavek přes dispatcher. Vytvořte ProxyAgent pro vybranou HTTP proxy a předejte jej volání fetch namísto změny globálního dispatcheru celého procesu.
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();
}
Uložte program jako soubor .mjs nebo použijte projekt ES modulů. Dokumentační IP nahraďte HTTP proxy ze seznamu HTTP proxy. Import záměrně používá implementaci fetch z Undici, takže volba dispatcher patří zobrazenému klientovi.
Před obviněním IP ověřte kompatibilitu Node
Podporované verze Node závisejí na vydání Undici. Příklad používá Undici 8.12.3, které vyžaduje Node 22.19.0 nebo novější. Chyba načtení modulu nebo verze enginu nastane před dosažením proxy. Ověřte požadavky nainstalovaného balíčku, místo předpokladu, že každý Node spustí nejnovější Undici.
Jeden agent může obsloužit opakované požadavky
Krátký program na konci dispatcher zavře. Pokud aplikace posílá více požadavků přes stejný bod, ponechte agenta pro tuto zátěž a zavřete jej po jejím skončení. Vytváření a zavírání agenta pro každé URL brání užitečnému opětovnému využití spojení.
Globální dispatcher se hodí jen při zamýšlené širší změně. Výslovné předání usnadňuje test IP proxy bez změny odchozích požadavků jiné komponenty.
Sledujte odpověď a fázi selhání
Fetch nepovažuje každý chybový HTTP stav za odmítnutý Promise. 403 nebo 429 může být skutečná odpověď webu přenesená přes proxy. Chyba spojení nebo tunelu naopak může odmítnout požadavek před vznikem objektu odpovědi. Čtěte stav odděleně od chyb vyvolaných voláním.
Je-li nutná autentizace, ProxyAgent Undici nabízí volby v konstruktoru. Nepřidávejte autorizační hlavičku proxy mezi hlavičky požadavku na web; agent obsluhuje jiný úsek spojení.