បន្ថែម TLS បន្ទាប់ពី Perl បានបើកការតភ្ជាប់ SOCKS
ដាក់ IO::Socket::SSL ពីលើការតភ្ជាប់ IO::Socket::Socks ហើយផ្ទៀងផ្ទាត់ឈ្មោះម៉ាស៊ីនគោលដៅ។
ការតភ្ជាប់ SOCKS និងការតភ្ជាប់ TLS មានការងារខុសគ្នា។ ដំបូងទទួលបានលំហូរបៃទៅគោលដៅតាមរយៈ SOCKS។ បន្ទាប់មកចាប់ផ្តើម TLS លើលំហូរនោះ ដោយកំណត់គេហទំព័រគោលដៅ មិនមែនប្រូកស៊ីទេ។
សម្រាប់ចំណុចចុងបញ្ចប់ TLS បែប HTTPS ការរៀបចំអាចជា៖
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។ ការប្រើឈ្មោះម៉ាស៊ីនប្រូកស៊ីនៅដំណាក់កាលនោះអាចស្នើ ឬផ្ទៀងផ្ទាត់អត្តសញ្ញាណខុស។
ការកំណត់ឃ្លាំងទុកចិត្តគឺជាតម្រូវការឯករាជ្យមួយទៀត។ ប្រើការកំណត់ CA ដែលកម្មវិធីបម្រុង ជំនួសឱ្យ callback ដែលទុកចិត្តអ្វីៗទាំងអស់ ដែលចម្លងពីឧទាហរណ៍វិនិច្ឆ័យ។
ប្រសិនបើជំហាន SOCKS បរាជ័យ ការផ្លាស់ប្តូរប៉ារ៉ាម៉ែត្រ TLS នឹងមិនជួសជុលវាទេ។ ប្រសិនបើ SOCKS ជោគជ័យ ហើយ TLS បរាជ័យ សូមរក្សា កំហុសវិញ្ញាបនបត្រ និងឈ្មោះម៉ាស៊ីន ជាភស្តុតាង ជំនួសឱ្យការចាត់ទុកវាជាការខូចប្រូកស៊ីទូទៅ។
ឈ្មោះម៉ូឌុលក៏សំខាន់ដែរ៖ IO::Socket::Socks និង IO::Socket::SSL ផ្តល់ constructor និងឥរិយាបថដំឡើងខុសគ្នា។ សុខេត TCP ដើមដែលគ្រាន់តែឈានដល់ប្រូកស៊ី មិនទាន់បានបញ្ចប់ការចរចាគោលដៅ SOCKS នៅឡើយទេ។