Naɗe SOCKS socket da TLS a cikin Node.js
Naɗe rafin manufa da fakitin socks ke mayarwa da tls.connect kuma ka adana sunan mai masaukin gidan yanar gizon don SNI da tabbatar da takardar shaida.
SocksClient.createConnection yana mayar da rafi da aka haɗa da manufar da aka nema. Don HTTPS, wannan rafin har yanzu yana buƙatar musafaha TLS kafin ya ɗauki buƙatar 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`
);
});
jerin wakilan SOCKS5 yana ba da ƴan takara don mai masauki da tashar wakili. onTransportError da onResponseBytes na aikace-aikacen da ke akwai ne; na biyun dole ne ya bincika rafin amsar HTTP. Ɓangarorin bayanan TLS ba saƙonnin HTTP cikakke ne da kansu.
servername shine sunan DNS na manufar. tls.connect na ƙananan matakin Node baya kunna SNI ta tsohuwa, kuma sunan mai masaukin wakili ba shine asalin takardar shaidar gidan yanar gizon ba.
Ka bar tabbatar da takardar shaida a kunne. Bayar da socket ɗin da aka haɗa yana guje wa buɗe wata hanya kai tsaye daban zuwa gidan yanar gizon yayin da ake kiyaye asalin TLS ɗinsa.
Lokacin SOCKS yana iyakance wannan tattaunawa. Musayar TLS da aikace-aikacen daga baya har yanzu suna buƙatar lokacin da mai kira ya yi niyya, sokewa da manufar tsaftacewa.