Mae SocksClient.createConnection yn dychwelyd ffrwd wedi ei chysylltu â'r gyrchfan a ofynnwyd amdani. Ar gyfer HTTPS mae'r ffrwd honno'n dal angen ysgwyd llaw TLS cyn cario'r cais 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`
  );
});

Mae Rhestr dirprwy SOCKS5 yn darparu ymgeiswyr ar gyfer gwesteiwr a phorth y dirprwy. Mae onTransportError ac onResponseBytes yn perthyn i'r cymhwysiad presennol; rhaid i'r ail ddadansoddi ffrwd yr ymateb HTTP. Mae tameidiau data TLS nid ydynt yn negeseuon HTTP cyflawn ar eu pen eu hunain.

Enw DNS y gyrchfan yw'r servername. Nid yw tls.connect lefel isel Node yn galluogi SNI yn ddiofyn, ac nid enw gwesteiwr y dirprwy yw hunaniaeth tystysgrif y wefan.

Cadwch ddilysu tystysgrifau ymlaen. Mae darparu'r soced cysylltiedig yn osgoi agor cysylltiad uniongyrchol ar wahân i'r wefan tra'n cadw ei hunaniaeth TLS.

Mae terfyn amser SOCKS yn cyfyngu'r drafodaeth honno. Mae'r cyfnewid TLS a chymhwysiad diweddarach yn dal angen y terfyn amser, y canslo a'r polisi glanhau a fwriadwyd gan y galwr.

Erthyglau cysylltiedig