Gebruik ’n proxy-IP met Node se Undici
Koppel ’n Undici ProxyAgent aan een fetch-versoek en hou die verbindingspoel apart van ander Node-verkeer.
Undici roeteer ’n versoek deur ’n dispatcher. Skep ’n ProxyAgent vir die gekose HTTP-proxy en gee dit aan die fetch-oproep eerder as om die hele proses se globale dispatcher te verander.
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();
}
Stoor die program as ’n .mjs-lêer of gebruik ’n ES-moduleprojek. Vervang die dokumentasie-IP met ’n HTTP-proxy uit die HTTP-instaanbedienerlys. Die invoer gebruik doelbewus Undici se fetch-implementering, dus behoort die dispatcher-opsie aan die getoonde kliënt.
Kontroleer Node-versoenbaarheid voordat jy die IP blameer
Die Node-weergawes wat Undici ondersteun hang van die pakketuitgawe af. Hierdie voorbeeld gebruik Undici 8.12.3, wat Node 22.19.0 of nuwer vereis. ’n Modulelaai- of enjinweergawefout gebeur voordat die versoek die proxy bereik. Kontroleer die geïnstalleerde pakket se vereistes; moenie aanvaar elke Node loop die jongste Undici nie.
Een agent kan herhaalde versoeke bedien
Die kort program sluit die dispatcher aan die einde. As ’n lopende toepassing verskeie versoeke deur dieselfde eindpunt stuur, behou die agent vir daardie werklading en sluit dit wanneer die werk eindig. Om vir elke URL ’n agent te skep en te sluit verhinder nuttige verbindingshergebruik.
’n Globale dispatcher pas net wanneer jy die breër verandering bedoel. Uitdruklike oordrag maak ’n proxy-IP makliker toetsbaar sonder om ’n ander komponent se uitgaande versoeke te verander.
Kyk na die antwoord en die mislukkingsfase
Fetch behandel nie elke HTTP-foutstatus as ’n verwerpte Promise nie. ’n 403 of 429 kan ’n werklike webwerfantwoord wees wat die proxy oorgedra het. ’n Verbindings- of tonnelfout kan eerder die versoek verwerp voordat ’n antwoordobjek bestaan. Lees status apart van foute wat die oproep gooi.
As stawing nodig is, bied Undici se ProxyAgent konstrukturopsies. Moenie ’n proxymagtigingsopskrif by die webwerf se versoekopskrifte voeg nie; die agent hanteer ’n ander verbindingsdeel.