Perl SOCKS ئۇلىنىشىنى ئاچقاندىن كېيىن TLS قوشۇش
IO::Socket::SSL نى IO::Socket::Socks ئۇلىنىشى ئۈستىگە قويۇپ، نىشاننىڭ خوست نامىنى دەلىللەڭ.
SOCKS ئۇلىنىشى بىلەن TLS ئۇلىنىشىنىڭ ۋەزىپىسى ئوخشاش ئەمەس. ئالدى بىلەن SOCKS ئارقىلىق نىشانغا بايت ئېقىمى ئېلىڭ. ئاندىن شۇ ئېقىم ئۈستىدە TLS باشلاپ، پروكسىنى ئەمەس، نىشان تور بېتىنى تونۇڭ.
HTTPS تىپىدىكى TLS ئاخىرلاش نۇقتىسى ئۈچۈن تەرتىپ مۇنداق بولۇشى مۇمكىن:
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();
رۇخسەت قىلىنغان ئاممىۋى پروكسى يولىدىكى ئاممىۋى HTTPS نىشان ئۈچۈن SOCKS5 پروكسى تىزىملىكى ProxyAddr ۋە ProxyPort ئۈچۈن نامزاتلارنى تەمىنلەيدۇ. بۇ پارچە يەتكۈزۈش قاتلاملىرىنى قۇرىدۇ؛ پروگرامما يەنىلا نىشان كۈتىدىغان پروتوكولنى ئەۋەتىپ، تۈگىگەندە سوكېتنى تاقىشى كېرەك.
مەقسەت قىلىنغان ھەمراھ نامىنى ساقلاڭ
پروكسى ئاخىرلاش نۇقتىسى بىرىنچى ئۇلىنىشقا تەۋە. TLS SNI ۋە خوست نامى دەلىللەش example.com بىلەن مۇناسىۋەتلىك. شۇ باسقۇچتا پروكسىنىڭ خوست نامىنى ئىشلىتىش خاتا كىملىكنى تەلەپ قىلىشى ياكى دەلىللىشى مۇمكىن.
ئىشەنچ ئامبىرى سەپلىمىسى يەنە بىر مۇستەقىل تەلەپ. دىئاگنوز مىساللىرىدىن كۆچۈرۈلگەن ھەممىگە ئىشىنىدىغان callback ئورنىغا پروگراممىنىڭ مەقسەت قىلغان CA سەپلىمىسىنى ئىشلىتىڭ.
ئەگەر SOCKS باسقۇچى مەغلۇپ بولسا، TLS پارامېتىرلىرىنى ئۆزگەرتىش ئۇنى تۈزەتمەيدۇ. ئەگەر SOCKS مۇۋەپپەقىيەت قازىنىپ، TLS مەغلۇپ بولسا، گۇۋاھنامە ۋە خوست نامى خاتالىقىنى ئىسپات سۈپىتىدە ساقلاڭ، ئۇنى ئادەتتىكى پروكسى ئۈزۈلۈشى دەپ قارىماڭ.
مودۇل ناملىرىمۇ مۇھىم: IO::Socket::Socks ۋە IO::Socket::SSL ئوخشاش بولمىغان قۇرغۇچى ۋە يېڭىلاش ھەرىكىتىنى تەمىنلەيدۇ. پەقەت پروكسىغا يەتكەن خام TCP سوكېت تېخى SOCKS نىشان سۆھبىتىنى تاماملىمىدى.