Eine Proxy-IP mit Nodes Undici verwenden
Ordnen Sie einem einzelnen fetch-Aufruf einen Undici ProxyAgent zu und trennen Sie dessen Verbindungspool von anderem Node-Verkehr.
Undici leitet eine Anfrage über einen Dispatcher. Erstellen Sie einen ProxyAgent für den gewählten HTTP-Proxy und übergeben Sie ihn beim fetch-Aufruf, statt den globalen Dispatcher des gesamten Prozesses zu ändern.
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();
}
Speichern Sie das Programm als .mjs-Datei oder verwenden Sie ein ES-Modul-Projekt. Ersetzen Sie die Dokumentations-IP durch einen HTTP-Proxy aus der HTTP-Proxy-Liste. Der Import nutzt bewusst Undicis fetch-Implementierung; die Option dispatcher gehört somit zum gezeigten Client.
Node-Kompatibilität prüfen, bevor Sie die IP verdächtigen
Welche Node-Versionen Undici unterstützt, hängt von der Paketversion ab. Dieses Beispiel verwendet Undici 8.12.3 und benötigt Node 22.19.0 oder neuer. Ein Fehler beim Modulladen oder bei der Engine-Version tritt auf, bevor die Anfrage einen Proxy erreicht. Prüfen Sie die Engine-Anforderung des installierten Pakets, statt anzunehmen, jede Node-Version könne das neueste Undici ausführen.
Ein Agent kann mehrere Anfragen bedienen
Das kurze Programm schließt seinen Dispatcher am Ende. Sendet eine laufende Anwendung mehrere Anfragen über denselben Endpunkt, behalten Sie den Agent für diese Arbeitslast und schließen ihn nach deren Ende. Einen Agent für jede URL neu zu erstellen und zu schließen verhindert sinnvolle Verbindungswiederverwendung.
Ein globaler Dispatcher passt nur, wenn Sie diese weiterreichende Änderung beabsichtigen. Die explizite Übergabe erleichtert Proxy-IP-Tests, ohne ausgehende Anfragen anderer Komponenten zu verändern.
Antwort und Fehlerphase betrachten
Fetch behandelt nicht jeden HTTP-Fehlerstatus als abgelehntes Promise. Ein 403 oder 429 kann eine echte Website-Antwort sein, die der Proxy transportiert hat. Ein Verbindungs- oder Tunnelfehler kann dagegen die Anfrage ablehnen, bevor ein Antwortobjekt existiert. Lesen Sie den Status getrennt von Fehlern, die der Aufruf auslöst.
Bei nötiger Authentifizierung bietet Undicis ProxyAgent Optionen am Konstruktor. Fügen Sie keinen Proxy-Autorisierungsheader zu den Anfrageheadern der Website hinzu; der Agent behandelt einen anderen Verbindungsschritt.