Soc SOCKS a fhilleadh le TLS i Node.js
Fill an sruth cinn scríbe a thugann an pacáiste socks le tls.connect agus coinnigh óstainm an tsuímh le haghaidh SNI agus fíorú teastais.
Tugann SocksClient.createConnection sruth atá ceangailte leis an gceann scríbe iarrtha. I gcás HTTPS, tá croitheadh láimhe TLS fós ag teastáil ón sruth sin sula n-iompraíonn sé an iarratas HTTP.
import { SocksClient } from 'socks';
import tls from 'node:tls';
const targetHost = 'service.example';
const info = await SocksClient.createConnection({
proxy: { host: 'proxy.example', port: 1080, type: 5 },
command: 'connect',
destination: { host: targetHost, port: 443 },
timeout: 10000,
});
const secure = tls.connect({
socket: info.socket,
servername: targetHost,
});
secure.on('error', onTransportError);
secure.on('data', onResponseBytes);
secure.once('secureConnect', () => {
secure.write(
`GET /data HTTP/1.1\r\nHost: ${targetHost}\r\nConnection: close\r\n\r\n`
);
});
Soláthraíonn liosta seachfhreastalaithe SOCKS5 iarrthóirí d'óstach agus do phort an tseachfhreastalaí. Baineann onTransportError agus onResponseBytes leis an bhfeidhmchlár atá ann cheana; caithfidh an dara ceann sruth freagartha HTTP a pharsáil. Ní hiad na smután sonraí TLS teachtaireachtaí HTTP comhlána go neamhspleách.
Is é an servername ainm DNS an chinn scríbe. Ní ghníomhachtaíonn tls.connect íseal-leibhéil Node SNI de réir réamhshocraithe, agus ní hé óstainm an tseachfhreastalaí féiniúlacht theastas an tsuímh.
Coinnigh fíorú teastais ar siúl. Trí an soc atá ceangailte a sholáthar seachnaítear nasc díreach ar leithligh chuig an suíomh agus caomhnaítear a fhéiniúlacht TLS.
Cuireann teorainn ama SOCKS teorainn leis an idirbheartaíocht sin. Teastaíonn an teorainn ama, an chealú agus an pholasaí glanta atá beartaithe ag an nglaoiteoir fós ón malartú TLS agus feidhmchláir níos déanaí.