SocksClient.createConnection kemur aftur við streymi, sum er knýtt at málinum, sum varð umbiðið. Fyri HTTPS hevur hetta streymið enn tørv á TLS-hondtaki, áðrenn tað flytur HTTP-umbiðið.

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

Listin av SOCKS5-proxyum veitir hættismenn til vert og port hjá proxy. onTransportError og onResponseBytes hoyra til verandi forritið; tað seinna má greina HTTP-svarstreymið. TLS-dátubitarnir eru ikki sjálvstøðugt fullkomnar HTTP-boð.

servername er DNS-navnið hjá málinum. Tls.connect á lágum stigi í Node ger SNI ikki virkið sum standard, og vertsnavnið hjá proxy er ikki samsvarandi váttanaridentitetur hjá heimasíðuni.

Lat váttanarroyndina vera virkna. Tá tú letur hin knýtta sokkin, sleppur tú undan at opna eina serstaka beina samband til heimasíðuna og varðveitir TLS-identitetin hjá henni.

SOCKS-tíðarmarkið avmarkar hetta samráðing. Seinni TLS- og forritaskiftið krevur framvegis tað tíðarmark, avlýsing og ruddingspolitikk, sum kallarin hevur ætlað.

Skyldar greinar