SOCKS-Agent mit dem HTTPS-Client von Node verwenden
Hängen Sie socks-proxy-agent an eine HTTPS-Anfrage des Node-Kerns an und erhalten Sie die Unterscheidung zwischen Node-Agent und fetch-Dispatcher.
Ein SOCKS-fähiger Agent kann die Zielverbindung für den HTTPS-Kernclient von Node aufbauen. Wenn socks-proxy-agent in der Anwendung verfügbar ist:
const https = require('node:https');
const { SocksProxyAgent } = require('socks-proxy-agent');
const agent = new SocksProxyAgent('socks5h://proxy.example:1080');
const request = https.get('https://www.example.com/', {
agent,
signal: AbortSignal.timeout(15000),
}, (response) => {
console.log(response.statusCode);
response.on('error', console.error);
response.resume();
});
request.on('error', console.error);
Ersetzen Sie den Beispiel-Endpunkt durch einen nicht authentifizierten Kandidaten aus der SOCKS5-Proxy-Liste für diese öffentliche HTTPS-Anfrage. Der Callback liest die Antwort nach dem Ausgeben des Status aus; konsumieren Sie den Body dort, wenn die Anwendung ihn benötigt. Verwenden Sie den Agenten für seine zugewiesenen Vorgänge wieder und zerstören Sie ihn, wenn diese Client-Richtlinie aufgegeben wird und seine Arbeit beendet ist.
Wählen Sie, wo der Zielname aufgelöst wird
In der URL-Behandlung von socks-proxy-agent überlässt socks5h die Auflösung des Ziel-Hostnamens dem Proxy-Pfad; socks5 löst ihn lokal auf. Das ist wichtig, wenn der Name nur im Netzwerk des Proxys verfügbar ist.
Die HTTPS-URL behält die Identität der Website. Der Agent führt die SOCKS-Aushandlung durch, bevor Node TLS zu dieser Website startet.
Bei einem Dienst mit Benutzername/Passwort legen Sie die Anmeldedaten in der Proxy-URL mit URI-Komponenten-Kodierung für reservierte Zeichen ab. Halten Sie die vollständige URL aus Protokollen heraus. Authorization-Header des Ziels gehören zum Konto der Website.
Dieser Agent arbeitet mit den HTTP/HTTPS-Anfrage-APIs des Node-Kerns. fetch von Node verwendet eine Dispatcher-Schnittstelle, daher konfigurieren Sie die unterstützte SOCKS-Integration dieses Clients separat.