Node.js EPIPE po prisijungimo prie SOCKS proxy
Paaiškinkite Node EPIPE po prisijungimo prie SOCKS galinio taško ir patikrinkite, ar baigtas reikiamas handshake.
Node socketo connect įvykis nurodo, kad TCP pasiekė proxy. Jis nenurodo, kad proxy atidarė ryšį su paskirties vieta.
SOCKS5 serveris prieš programos srautą tikisi metodo derybų, pasirinktos autentifikacijos ir paskirties užklausos. Iš karto nusiuntus HTTP užklausą, serveris gali uždaryti ryšį. Vėlesnis rašymas tuomet gali sukelti EPIPE.
Vien EPIPE neįrodo, kad trūksta handshake. Jis praneša apie rašymą į ryšį, kurio kita pusė nebepriima šio bendravimo. Skaitykite ankstesnius įvykius ir protokolo atsakymus, kad sužinotumėte, kodėl kita pusė uždarė ryšį.
Naudokite jungtį, kuri įgyvendina visą SOCKS mainą. Node pagrindiniam HTTPS klientui SOCKS suprantantis agentas gali atlikti šias derybas prieš paskirties TLS. Jei mainą įgyvendinate patys, kaupkite duomenis pagal protokolo laukų ilgius. Nėra garantijos, kad vienas data įvykis turės vieną pilną atsakymą, o grąžintas susietas adresas neprivalo atitikti vienos kietai įkoduotos baitų eilutės.
Užregistruokite klaidų apdorojimą prieš operacijai nepavykstant, išsaugokite ryšio etapą klaidos ataskaitoje ir siųskite paskirties protokolą tik po sėkmingų derybų. Klaidos sugavimas apsaugo nuo neapdoroto įvykio, bet nepataiso netinkamo maino.