Mae gan y cysylltiad SOCKS a'r cysylltiad TLS wahanol waith. Yn gyntaf, cael ffrwd beitiau i'r gyrchfan drwy SOCKS. Yna cychwyn TLS dros y ffrwd honno, gan nodi gwefan y gyrchfan yn hytrach na'r procsi.

Ar gyfer pen draw TLS o fath HTTPS, gall y drefniant fod:

use IO::Socket::Socks;
use IO::Socket::SSL;

my $target = 'example.com';
my $socket = IO::Socket::Socks->new(
    SocksVersion => 5,
    ProxyAddr => '127.0.0.1',
    ProxyPort => 1080,
    ConnectAddr => $target,
    ConnectPort => 443,
) or die $!;

IO::Socket::SSL->start_SSL(
    $socket,
    SSL_hostname => $target,
    SSL_verifycn_name => $target,
    SSL_verifycn_scheme => 'http',
    SSL_verify_mode => SSL_VERIFY_PEER,
) or die IO::Socket::SSL::errstr();

Ar gyfer targed HTTPS cyhoeddus ar lwybr procsi cyhoeddus a ganiateir, mae'r rhestr procsi SOCKS5 yn cynnig ymgeiswyr ar gyfer ProxyAddr a ProxyPort. Mae'r darn yn sefydlu'r haenau cludiant; rhaid i'r cymhwysiad barhau i anfon y protocol y mae'r gyrchfan yn ei ddisgwyl a chau'r soced pan fydd wedi gorffen.

Cadw'r enw cymar a fwriadwyd

Mae pen draw'r procsi yn perthyn i'r cysylltiad cyntaf. Mae SNI TLS a gwirio enw gwesteiwr yn ymwneud â example.com. Gall defnyddio enw gwesteiwr y procsi ar y cyfnod hwnnw ofyn am neu wirio hunaniaeth anghywir.

Mae ffurfweddu'r storfa ymddiriedaeth yn ofyniad annibynnol arall. Defnyddiwch ffurfwedd CA arfaethedig y cymhwysiad yn lle callback sy'n ymddiried yn popeth, wedi'i gopïo o enghraifft ddiagnostig.

Os bydd cam SOCKS yn methu, ni fydd newid paramedrau TLS yn ei drwsio. Os bydd SOCKS yn llwyddo ac TLS yn methu, cadwch y gwall tystysgrif ac enw gwesteiwr fel tystiolaeth yn lle ei drin fel methiant procsi cyffredinol.

Mae enwau'r modiwlau hefyd yn bwysig: mae IO::Socket::Socks ac IO::Socket::SSL yn cynnig adeiladwyr ac ymddygiad uwchraddio gwahanol. Nid yw soced TCP crai sydd ond wedi cyrraedd y procsi wedi cwblhau trafodaeth cyrchfan SOCKS eto.

Erthyglau cysylltiedig