ፐርል የ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 የመድረሻ ድርድሩን ገና አልጨረሰም።