http_proxy ရှိနေသောကြောင့်သာ ရိုးရှင်းသော Python socket သည် proxy နှင့် ညှိနှိုင်းမှု မပြုပါ။ ကိုယ်ပိုင် TCP ပရိုတိုကောဖြင့် ပြောဆိုသော application အတွက် proxy ၏ အဆုံးတွင် ဝန်ဆောင်မှုကို နားလည်သော connector ကို အသုံးပြုပါ။

PySocks ရှိပြီးဖြစ်ပါက ချိတ်ဆက်မှုကို တိကျစွာ ဖန်တီးပါ-

import socks

with socks.socksocket() as connection:
    connection.set_proxy(socks.SOCKS5, '203.0.113.10', 1080)
    connection.settimeout(10)
    connection.connect(('example.com', 12345))
    # Exchange the destination protocol here.

စာတမ်း လိပ်စာနှင့် ဦးတည်ရာ ပေါက်ကို အစားထိုးပါ။ ခွင့်ပြုထားသော အများပြည်သူ ဦးတည်ရာအတွက် application ၏ ပစ်မှတ်ပေါက်ကို ခွင့်ပြုကြောင်း စစ်ဆေးပြီးမှသာ SOCKS5 proxy စာရင်းမှ ကိုယ်စားလှယ်လောင်းကို ရွေးပါ။ တပ်ဆင်ထားသော package၊ ပံ့ပိုးထားသော နည်းလမ်းများနှင့် အဆုံးလိုအပ်ချက်များကို PySocks interface နှင့် စစ်ဆေးပါ။

ကျန်သော application သည် ၎င်း၏ ပရိုတိုကောကို ဤတည်ဆောက်ထားသော ချိတ်ဆက်မှုမှတစ်ဆင့် ဖလှယ်သည်။ ထို ပရိုတိုကောသည် TLS အသုံးပြုပါက proxy ညှိနှိုင်းမှု အပြီးတွင် စတင်ပြီး အမှန်တကယ် ဦးတည်ရာ hostname ကို စစ်ဆေးပါ။ proxy authentication သည် လမ်းကြောင်းကို တည်ဆောက်သည်၊ ဦးတည်ရာ login သို့မဟုတ် encryption ကို မပေးပါ။

SOCKS listener သည် SOCKS ညှိနှိုင်းမှု လိုအပ်သည်။ HTTP ဝန်ဆောင်မှုသည် မထင်မှတ်သော TCP ဦးတည်ရာအတွက် CONNECT စွမ်းရည်ရှိသော connector လိုအပ်ပြီး ၎င်း၏ ပေါက်ကို ငြင်းပယ်နိုင်သည်။ မှားယွင်းသော handshake ကို ချန်ထားပြီး လိပ်စာပြောင်းခြင်းထက် အမှန်တကယ် ကမ်းလှမ်းထားသော ဝန်ဆောင်မှုနှင့် ကိုက်ညီသော connector ကို ရွေးပါ။

အစားထိုးမှုကို ဒေသတွင်း ထားပါ။ socket.socket သို့ class တစ်ခု သတ်မှတ်ခြင်းသည် မသက်ဆိုင်သော import များနှင့် library များကို ထိခိုက်နိုင်သည်။ socket ဖန်တီးမှုကို အခြား library က ပိုင်ဆိုင်ပါက ၎င်း၏ မှတ်တမ်းတင်ထားသော connection factory သို့မဟုတ် proxy ရွေးချယ်မှုကို အသုံးပြုပါ။ ၎င်း ဘယ်တော့မှ မဖတ်သော dictionary သည် ထို ချိတ်ဆက်မှုကို မပြောင်းလဲနိုင်ပါ။

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