node-fetch den Proxy-Agenten nach einer Weiterleitung wählen lassen
Verwenden Sie eine Agent-Funktion für HTTP- und HTTPS-Ziele, damit eine Weiterleitung den passenden Proxy-Agenten auswählen kann.
Die erste URL kann HTTPS sein, die weitergeleitete URL HTTP. Wählen Sie den Agenten anhand des Ziels jeder Anfrage, statt einen Agenten an die erste URL zu binden.
Übergeben Sie für das importierte node-fetch-Paket in einer ESM-Anwendung eine Funktion:
import fetch from 'node-fetch';
import { HttpProxyAgent } from 'http-proxy-agent';
import { HttpsProxyAgent } from 'https-proxy-agent';
const proxyUrl = 'http://proxy.example:8080';
const httpAgent = new HttpProxyAgent(proxyUrl);
const httpsAgent = new HttpsProxyAgent(proxyUrl);
const response = await fetch('https://api.example/', {
agent: url => url.protocol === 'http:' ? httpAgent : httpsAgent,
});Ersetzen Sie die API-URL und den Proxy-Endpunkt. Für eine öffentliche API, die über einen öffentlichen Vermittler erlaubt ist, liefert die HTTP-Proxy-Liste Kandidaten für proxyUrl. Beide Agenten können denselben HTTP-Proxy-Listener nutzen; ihre Namen beziehen sich auf die Anfrage an das Ziel.
| An den Selektor übergebene URL | Gewählter Agent |
|---|---|
| https://… | httpsAgent |
| http://… | httpAgent |
Die Funktion wählt daher weiterhin den passenden Agenten, wenn eine Weiterleitung das Protokoll des Ziels ändert. proxyUrl beschreibt unabhängig von dieser Entscheidung den Vermittler.
Erstellen Sie die Agenten einmal für die Arbeitslast und verwenden Sie sie wieder. Behandeln Sie den zurückgegebenen Status und lesen Sie den Antworttext im aufrufenden Code. Diese Agent-Schnittstelle gehört zu node-fetch; das eingebaute fetch von Node nutzt eine andere Transportschnittstelle.