Das connect-Ereignis des Node-Sockets sagt Ihnen, dass TCP den Proxy erreicht hat. Es sagt nicht, dass der Proxy eine Verbindung zum Ziel geöffnet hat.

Ein SOCKS5-Server erwartet Methodenaushandlung, eine eventuell gewählte Authentifizierung und eine Zielanfrage vor dem Anwendungsverkehr. Wird sofort eine HTTP-Anfrage gesendet, kann der Server die Verbindung schließen. Ein späteres Schreiben kann dann EPIPE erzeugen.

EPIPE allein beweist keinen fehlenden Handshake. Es meldet ein Schreiben auf eine Verbindung, deren Gegenstelle diese Kommunikation nicht mehr annimmt. Lesen Sie die früheren Ereignisse und Protokollantworten, um herauszufinden, warum die Gegenstelle geschlossen hat.

Verwenden Sie einen Connector, der den vollständigen SOCKS-Austausch implementiert. Für Nodes Kern-HTTPS-Client kann ein SOCKS-fähiger Agent diese Aushandlung vor dem TLS des Ziels durchführen. Wenn Sie den Austausch selbst implementieren, sammeln Sie Daten entsprechend den Feldlängen des Protokolls. Ein data-Ereignis enthält nicht garantiert eine vollständige Antwort, und die zurückgegebene gebundene Adresse muss nicht mit einer fest codierten Bytefolge übereinstimmen.

Registrieren Sie die Fehlerbehandlung, bevor der Vorgang fehlschlagen kann, behalten Sie die Verbindungsphase im Fehlerbericht bei und senden Sie das Zielprotokoll erst, nachdem die Aushandlung erfolgreich war. Das Abfangen des Fehlers verhindert ein unbehandeltes Ereignis; es repariert keinen ungültigen Austausch.

Ähnliche Artikel