SocksClient.createConnection skilar straumi sem er tengdur við umbeðið ákvörðunarstað. Fyrir HTTPS þarf þessi straumur enn TLS-handaband fyrir það ber HTTP-beiðnina.

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`
  );
});

listinn yfir SOCKS5-umboð útvegar kandídata fyrir hýsil og port umboðsins. onTransportError og onResponseBytes tilheyra núverandi forriti; hið síðara þarf að þátta HTTP-svarsstrauminn. TLS-gagnabitar eru ekki sjálfstætt fullbúnar HTTP-skilaboð.

servername er DNS-nafn ákvörðunarstaðarins. tls.connect á lágum stigi í Node virkjar ekki SNI sjálfgefið, og hýsilnafn umboðsins er ekki vottorðssjálfsmynd vefsins.

Hafið vottorðasannprófun virka. Með því að gefa upp tengda tengið er forðast að opna sérstaka beina tengingu við vefinn og TLS-sjálfsmynd hans varðveitt.

SOCKS-tímamörkin takmarka þessa samningaviðræður. Síðari TLS- og forritaskiptin þurfa enn fyrirhuguð tímamörk, afturköllun og hreinsunarstefnu kallarans.

Tengdir greinar