Gots agent-Objekt ist nach dem Zielprotokoll verschlüsselt. Eine SOCKS-Verbindung für eine HTTPS-URL gehört daher unter https, nicht unter einen neuen Schlüssel namens socks.

Für eine bestehende ESM-Anwendung, die Got und socks-proxy-agent auf dem HTTP/1-Pfad verwendet:

import got from 'got';
import {SocksProxyAgent} from 'socks-proxy-agent';

const agent = new SocksProxyAgent('socks5h://proxy.example:1080');
const body = await got('https://www.example.org/', {
  http2: false,
  agent: {
    http: agent,
    https: agent,
  },
  timeout: {request: 20000},
}).text();

Die SOCKS5-Proxy-Liste liefert Kandidaten für die kontolose Proxy-URL des Beispiels. Derselbe Agent kann die gezeigten HTTP- und HTTPS-Einträge bedienen. Er baut die SOCKS-Verbindung auf, danach führt der HTTPS-Pfad seinen TLS-Handshake mit dem Ziel aus.

In diesem Agenten überlässt socks5h die Auflösung des Ziel-Hostnamens dem SOCKS-Proxy. socks5 wählt stattdessen die lokale Auflösung. Der eigene Hostname des Proxys muss weiterhin vom Node-Prozess aus erreichbar sein.

Gots HTTP/2-Agent-Slot erwartet eine andere Schnittstelle. Kopieren Sie diesen Agenten nicht nach agent.http2 und nehmen Sie nicht an, dass er HTTP/2-Proxy-Unterstützung bietet.

Verwenden Sie den konfigurierten Agenten für die Arbeitslast wieder und zerstören Sie ihn, wenn sein Besitzer herunterfährt. Gleichen Sie Paketversionen auf die Node-Laufzeit der Anwendung ab; dieses Beispiel nutzt den benannten SocksProxyAgent-Export.

Ähnliche Artikel