PHP အက်ပ်တစ်ခုသည် Alice နှင့် Bob ကို ဝန်ဆောင်ပေးပြီး နှစ်ဦးစလုံး ၎င်း၏ ဆာဗာဘက် cURL client ကို အသုံးပြု၍ proxy မှတစ်ဆင့် တူညီသော အဝေးမှ ဝက်ဘ်ဆိုက်သို့ ရောက်ရှိကြသည်။ တောင်းဆိုမှုတိုင်း cookies.txt ကို ဖွင့်ပါက အသုံးပြုသူ နှစ်ဦးသည် တူညီသော အဝေးမှ လော့ဂ်အင် ကို အမွေဆက်ခံနိုင်သည်။ သူတို့၏ proxy လိပ်စာများ ပြောင်းလဲခြင်းသည် ထိုဖိုင်ကို မခွဲထုတ်ပါ။

ဖိုင်အမည် မရွေးမီ cookie ၏ ပိုင်ရှင်ကို ရွေးပါ။ များသောအားဖြင့် ၎င်းသည် အက်ပ်၏ ယုတ္တိဆိုင်ရာ အဝေးမှ session ဖြစ်သည်: ဒေသခံ အသုံးပြုသူ၊ တိကျသော အဝေးမှ အကောင့်နှင့် လိုအပ်ပါက သီးခြား အလုပ်ခွင်။ proxy အဆုံးမှတ်သည် လမ်းကြောင်း ရွေးချယ်မှုဖြစ်ပြီး ယုံကြည်ရသော session အမှတ်အသား မဟုတ်ပါ။ အသုံးပြုသူ အများအပြားသည် အဆုံးမှတ်တစ်ခုကို မျှဝေနိုင်ပြီး အဆုံးမှတ်သည် ထွက်ပေါက်များကို လှည့်ပတ်နိုင်သည်။

တူညီသော session ၏ အိုးကို ဖွင့်ပြီး သိမ်းဆည်းပါ

အက်ပ်သည် ၎င်း၏ စစ်မှန်ကြောင်း အတည်ပြုပြီး session ကို ဆာဗာက ဖန်တီးသော ဖိုင်သော့သို့ ချိတ်ဆက်ခွင့်ပြုပါ။ သီးသန့် cookie လမ်းညွှန်နှင့် ယုံကြည်ရသော $sessionKey ဖြင့် cURL ဖွဲ့စည်းမှုသည် ဤပုံစံရှိသည်:

$jar = $cookieDirectory . '/' . $sessionKey . '.cookies';

$ch = curl_init('https://service.example.net/account');
curl_setopt_array($ch, [
    CURLOPT_PROXY => 'http://proxy.example.net:8080',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_COOKIEFILE => $jar,
    CURLOPT_COOKIEJAR => $jar,
]);

အများပြည်သူ ကြားခံကို ခွင့်ပြုသော ကွန်ရက်တွင် ခွင့်ပြုထားသော အများပြည်သူ ဆိုက် session စမ်းသပ်မှုအတွက် HTTP proxy စာရင်း သည် ကိုယ်စားလှယ်လောင်း အဆုံးမှတ်များကို ပေးသည်။ သတ်မှတ်ထားသော proxy စစ်မှန်ကြောင်း အတည်ပြုခြင်း သို့မဟုတ် သိမ်းထားသော proxy အထောက်အထား မရှိသည့် handle ကို အသုံးပြုပြီး cookie အခြေအနေကို ၎င်း၏ ရည်ရွယ်ထားသော session တွင် သတ်မှတ်ထားပါ။ ဤအပိုင်းသည် handle ကို ဖွဲ့စည်းသည်; အက်ပ်သည် လွှဲပြောင်းမှုကို လုပ်ဆောင်ပြီး ပုံမှန် တောင်းဆိုမှု စီးကြောင်းမှတစ်ဆင့် ရလဒ်ကို စစ်ဆေးသည်။ COOKIEFILE သည် session အတွက် ယခင် cookie များကို ဖွင့်သည်။ COOKIEJAR သည် handle က ၎င်း၏ သိမ်းထားသော cookie များကို မည်သည့်နေရာတွင် ရေးမည်ကို ရွေးသည်။ ထွက်ရှိဖိုင်ကို သတ်မှတ်ရုံဖြင့် ယခင် လော့ဂ်အင်ကို မဖွင့်ပါ။

session အသစ်သည် ဖိုင်မပါဘဲ စတင်နိုင်သည်။ ၎င်း၏ ပထမ လွှဲပြောင်းမှုကို ရည်ရွယ်ထားသော အိုးလမ်းကြောင်း ပေးပါ၊ ဝက်ဘ်ဆိုက်က cookie များ တည်ထောင်ခွင့်ပြုပါ၊ ရရှိလာသော အခြေအနေကို နောက် တောင်းဆိုမှုအတွက် သိမ်းဆည်းပါ။ cookie လမ်းညွှန်သည် အက်ပ်၏ အလုပ်သမားက ရေးနိုင်ရမည် ဖြစ်ပြီး အများပြည်သူ ဝန်ဆောင်ပေးသော စာရွက်စာတမ်း သစ်ပင်ပြင်ပတွင် ထားရမည်။ ဧည့်သည်က ပေးသော အသုံးပြုသူအမည် သို့မဟုတ် လမ်းကြောင်းကို ဖိုင်အမည်အဖြစ် မပြောင်းပါနှင့်; ယုံကြည်ရသော သော့ကို ဆာဗာတွင် ရှာပါ။

သိမ်းဆည်းမှုသည် တောင်းဆိုမှု သက်တမ်းစက်ဝန်းတွင် နေရာ လိုအပ်သည်

libcurl သည် များသောအားဖြင့် handle ရှင်းလင်းစဉ် အိုးကို ရေးသည်။ အဝေးမှ ဖလှယ်မှုအပြီး အက်ပ်သည် ရှင်းလင်းသော သိမ်းဆည်းသည့် အမှတ် လိုအပ်ပါက ဤသို့ တောင်းဆိုနိုင်သည်:

curl_setopt($ch, CURLOPT_COOKIELIST, 'FLUSH');

၎င်းသည် handle လက်ရှိ သိထားသော cookie များကို ၎င်း၏ သတ်မှတ်ထားသော အိုးထဲသို့ ရေးသည်။ ထို session အတွက် handle အသုံးပြုမှုကို အပြီးသတ်ပြီးမှ မသက်ဆိုင်သော အလုပ်သို့ သတ်မှတ်ပါ။ Alice ၏ cookie များကို ရှိပြီးသား ကိုင်ထားသော handle တွင် အိုးလမ်းကြောင်းကို သာ ပြောင်းခြင်းသည် Bob ၏ သန့်ရှင်းသော session ကို ဖန်တီးခြင်းနှင့် မတူပါ။

အောင်မြင်သော ဒေါင်းလုဒ်နှင့် အောင်မြင်သော သိမ်းဆည်းမှုကိုလည်း ခွဲခြားပါ။ cookie-အိုး စာရွက်စာတမ်းက ရှင်းလင်းစဉ် ရေးခြင်း မအောင်မြင်မှုကို သာမန် လွှဲပြောင်းမှု အမှားအဖြစ် ပြန်မပေးကြောင်း ဖော်ပြသည်။ တောင်းဆိုမှုတစ်ခုအတွက် လော့ဂ်အင် အလုပ်လုပ်ပြီး နောက်တစ်ခုတွင် ပျောက်သွားပါက လမ်းညွှန် ပိုင်ဆိုင်မှု၊ ခွင့်ပြုချက်များနှင့် အက်ပ်၏ ရောဂါစစ်ဆေးမှု ထွက်ရှိချက်ကို စစ်ဆေးပါ။

တစ်ပြိုင်နက် တောင်းဆိုမှုများက နောက်ထပ် နယ်နိမိတ်တစ်ခုကို ယူဆောင်လာသည်။ အလုပ်သမား နှစ်ဦးသည် တူညီသော အိုးဟောင်းကို ဖွင့်နိုင်၊ သူတို့၏ မှတ်ဉာဏ်အတွင်း အခြေအနေကို လွတ်လပ်စွာ ပြောင်းနိုင်ပြီး ထို့နောက် မတူညီသော ရလဒ်များကို သိမ်းနိုင်သည်။ တောင်းဆိုမှု နှစ်ခုလုံးသည် အဝေးမှ လော့ဂ်အင် တစ်ခုကို မျှဝေပါက session တစ်ခုချင်း lock သို့မဟုတ် ညီမျှသော အစဉ်လိုက်လုပ်ဆောင်မှုသည် ဖွင့်ခြင်း၊ ဖလှယ်ခြင်းနှင့် သိမ်းဆည်းခြင်း အစဉ်တစ်ခုလုံးကို လွှမ်းခြုံရမည်; နောက်ဆုံး ရေးခြင်းကို သာ lock လုပ်ခြင်းသည် သူတို့၏ ယခင် snapshot များကို ညှိနှိုင်းမပေးပါ။ မတူညီသော session များသည် မတူညီသော ဖိုင်များနှင့် သီးခြား lock များ ရှိသင့်သည်။

ထွက်သည့်အခါ ရည်ရွယ်ထားသော အဝေးမှ session ကို အဆုံးသတ်ပြီး အက်ပ်၏ မူဝါဒအရ ၎င်း၏ ဒေသခံ cookie အခြေအနေကို အနားယူပါ။ အသစ် ရွေးချယ်ထားသော proxy ကို အသုံးပြုသူ စတင်သော မည်သည့် session အသစ်နှင့်မဆို ချိတ်ဆက်နိုင်ပြီး proxy လိပ်စာသည် မှတ်ဉာဏ်ထဲတွင် မည်သူ၏ လော့ဂ်အင် ရှိသည်ကို ဆုံးဖြတ်ရန် တာဝန်မယူစေပါ။

ဆက်စပ်ဆောင်းပါးများ