Proxy မှတစ်ဆင့် Mechanize HTTPS တောင်းဆိုမှု၏ နောက်ကွယ်ရှိ အလွှာများ
Mechanize၊ LWP ၏ HTTPS protocol module နှင့် SSL backend တို့သည် HTTPS တောင်းဆိုမှု တစ်ခုကို လမ်းကြောင်းချမှတ်ရန်၊ tunnel ပြုလုပ်ရန်နှင့် အတည်ပြုရန် မည်သို့ ပူးပေါင်းလုပ်ဆောင်သည်ကို ကြည့်ပါ။
မရယူမီ Mechanize object တွင် လမ်းကြောင်းကို သတ်မှတ်ပါ-
use WWW::Mechanize;
my $mech = WWW::Mechanize->new(timeout => 30);
$mech->proxy(
['http', 'https'],
'http://proxy.example.net:8080',
);
ဥပမာထဲတွင် ရည်ရွယ်ထားသော HTTP နားထောင်သူကို အသုံးပြုပါ။ ခွင့်ပြုထားသော အများသူငှာ ပစ်မှတ်များသို့ တောင်းဆိုမှုများအတွက် ကိုယ်စားလှယ်လောင်းများသည် HTTP proxy စာရင်းတွင် ရှိသည်။ array သည် ပစ်မှတ် scheme များကို အမည်ပေးသည်။ http:// အဆုံးမှတ်သည် HTTPS အတွက် သာမန် CONNECT လမ်းကြောင်းကို ပေးသည်- proxy သို့ HTTP၊ ပစ်မှတ်သို့ tunnel၊ ထို့နောက် ပစ်မှတ် TLS။ အကယ်၍ ဖြန့်ကျက်မှုသည် အစား ပတ်ဝန်းကျင် ဆက်တင်များကို အသုံးပြုပါက $mech->env_proxy သည် အခြားရွေးချယ်မှု ဖြစ်သည်။ နောက်ပိုင်းတွင် ၎င်းတို့ကို import လုပ်ခြင်းသည် ကုဒ်တွင် သတ်မှတ်ထားသော လမ်းကြောင်းကို ပြောင်းလဲနိုင်သည်။
Mechanize သည် သီးခြား HTTPS proxy အင်ဂျင်ကို မပေးဘဲ LWP::UserAgent ကွန်ရက်ချိတ်ဆက်မှုကို အမွေဆက်ခံသည်-
- Mechanize သည် လင့်များ၊ ဖောင်များနှင့် လက်ရှိစာမျက်နှာ အပြုအမူကို ပေးသည်။
- LWP::UserAgent နှင့် ၎င်း၏ HTTP သယ်ယူပို့ဆောင်မှုသည် လမ်းကြောင်းကို ရွေးချယ်ပြီး CONNECT ကို စီစဉ်သည်။
- LWP::Protocol::https သည် HTTPS ကိုင်တွယ်မှုကို ပေးပြီး ချိတ်ဆက်မှုကို အဆင့်မြှင့်သည်။
- Net::HTTPS သည် ၎င်း၏ SSL backend နှင့်အတူ TLS စွမ်းရည်ရှိသော socket ကို ပေးသည်၊ ခေတ်သစ် ဖွဲ့စည်းမှုများတွင် များသောအားဖြင့် IO::Socket::SSL ဖြစ်သည်။
ထည့်သွင်းထားသော SSL backend သည် proxy ကို မိမိကိုယ်တိုင် မရွေးချယ်ပါ။ မူရင်း HTTPS hostname ကို URL တွင် ထားရှိပါ- CONNECT လက်ခံခြင်းသည် ထိုဆိုက်၏ လက်မှတ်ကို မစစ်ဆေးပါ။
အဟောင်း အစိတ်အပိုင်းများကို ထိန်းသိမ်းစဉ် ဤနယ်နိမိတ်များကို ခွဲခြားပါ။ libwww-perl 6.06 နှင့် သီးခြား ဖြန့်ဝေသော LWP::Protocol::https 6.06 သည် သာမန် HTTP CONNECT အတွက် ညှိနှိုင်းထားသော ပြုပြင်မှုများကို မိတ်ဆက်ခဲ့သည်။ UserAgent ဗားရှင်း တစ်ခုတည်းဖြင့် HTTPS module ကို မဖော်ထုတ်နိုင်ပါ။ LWP::Protocol::https 6.15 သည် TLS ဖွင့်ထားသော proxy အဆုံးမှတ်များအတွက် ပြုပြင်မှု ထည့်ခဲ့ပြီး ၎င်းတို့၏ https:// scheme သည် ပစ်မှတ် TLS မတိုင်မီ proxy တွင် TLS ထည့်သည်။
ပိုမိုဟောင်းသော Net::SSL/Crypt::SSLeay ဖွဲ့စည်းမှုများသည် အစား ထို backend ၏ မှတ်တမ်းတင်ထားသော HTTPS_PROXY ပတ်ဝန်းကျင် ယန္တရားကို အသုံးပြုနိုင်သည်။ ၎င်း၏ ချက်ပြုတ်နည်းကို LWP က လမ်းကြောင်းကို ပိုင်ဆိုင်သော ခေတ်သစ် IO::Socket::SSL လမ်းကြောင်းတွင် မကျင့်သုံးပါနှင့်။
အစိတ်အပိုင်းကို ရွေးချယ်ရန် ပထမ မအောင်မြင်သော အဆင့်ကို အသုံးပြုပါ- ပျောက်နေသော HTTPS handler သည် protocol module နှင့် သက်ဆိုင်သည်။ ငြင်းပယ်ခံရသော CONNECT သည် လမ်းကြောင်း၊ အထောက်အထား သို့မဟုတ် မူဝါဒနှင့် သက်ဆိုင်သည်။ tunnel ပြီးနောက် လက်မှတ် အမှားသည် ပစ်မှတ်၏ အထောက်အထားနှင့် ယုံကြည်မှုနှင့် သက်ဆိုင်သည်။ ထို အထောက်အထားက ပံ့ပိုးသော အစိတ်အပိုင်းကို ပြောင်းလဲစဉ် အတည်ပြုမှုကို ထိန်းသိမ်းပါ။