Een proxy-IP gebruiken met Undici in Node
Koppel een Undici ProxyAgent aan één fetch-verzoek en houd de verbindingspool apart van ander Node-verkeer.
Undici leidt een verzoek via een dispatcher. Maak een ProxyAgent voor de gekozen HTTP-proxy en geef die mee aan fetch, in plaats van de globale dispatcher van het hele proces te wijzigen.
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();
}
Sla het programma op als .mjs-bestand of gebruik een ES-moduleproject. Vervang het documentatie-IP door een HTTP-proxy uit de HTTP-proxylijst. De import gebruikt bewust Undici’s fetch-implementatie; de optie dispatcher hoort dus bij de getoonde client.
Controleer Node-compatibiliteit voordat je het IP verdenkt
Welke Node-versies Undici ondersteunt, hangt af van de pakketversie. Dit voorbeeld gebruikt Undici 8.12.3 en vereist Node 22.19.0 of nieuwer. Een fout bij het laden van een module of in de engineversie treedt op voordat het verzoek de proxy bereikt. Controleer de eisen van het geïnstalleerde pakket; neem niet aan dat iedere Node de nieuwste Undici draait.
Eén agent kan meerdere verzoeken afhandelen
Het korte programma sluit zijn dispatcher aan het einde. Verstuurt een actieve toepassing meerdere verzoeken via hetzelfde eindpunt, houd de agent dan aan voor die werklast en sluit hem wanneer het werk eindigt. Per URL een agent maken en sluiten verhindert nuttig hergebruik van verbindingen.
Een globale dispatcher past alleen wanneer je de bredere wijziging bedoelt. Expliciet meegeven maakt een proxy-IP testen eenvoudiger zonder de uitgaande verzoeken van andere onderdelen te wijzigen.
Bekijk het antwoord en de fase van mislukking
Fetch behandelt niet elke HTTP-foutstatus als een afgewezen Promise. Een 403 of 429 kan een echt websiteantwoord zijn dat via de proxy kwam. Een verbindings- of tunnelfout kan daarentegen het verzoek afwijzen voordat er een antwoordobject bestaat. Lees de status apart van fouten die de aanroep opwerpt.
Als authenticatie nodig is, biedt Undici’s ProxyAgent opties op constructorniveau. Voeg geen proxyauthorisatieheader toe aan de verzoekheaders voor de website; de agent behandelt een ander verbindingsdeel.