http://proxy.example:8080 ကဲ့သို့ သမားရိုးကျ proxy တန်ဖိုးသည် URL ဖြစ်သည်။ Twisted ၏ clientFromString သည် tcp:host=proxy.example:port=8080 ကဲ့သို့ endpoint ဖော်ပြချက်ကို လက်ခံသည်။ စာကြောင်းနှစ်ခုသည် ဆက်စပ်အချက်အလက်များကို မတူညီသော သဒ္ဒါများဖြင့် ဖော်ပြသည်။

အပလီကေးရှင်းသည် သမားရိုးကျ HTTP proxy URL ကို လက်ခံပါက endpoint မဖန်တီးမီ ၎င်းကို ခွဲခြမ်းပါ-

import os
from urllib.parse import urlsplit
from twisted.internet.endpoints import HostnameEndpoint
from twisted.web.client import ProxyAgent

proxy = urlsplit(os.environ['http_proxy'])
if proxy.scheme != 'http' or not proxy.hostname:
    raise ValueError('Expected an HTTP proxy URL')
port = proxy.port if proxy.port is not None else 80
endpoint = HostnameEndpoint(reactor, proxy.hostname, port, timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)

ဤအပိုင်းသည် အပလီကေးရှင်းတွင် ၎င်း၏ reactor ရှိပြီးသားဟု ယူဆသည်။ port သည် HTTP URL ၏ မူလတန်ဖိုး မဟုတ်ပါက ဖွဲ့စည်းမှုတွင် အမှန်တကယ် proxy port ကို သတ်မှတ်ပါ။ HTTP proxy စာရင်းသည် proxy အကောင့်မလိုဘဲ ခွင့်ပြုထားသော အများသူငှာ HTTP တောင်းဆိုမှုအတွက် endpoint ကိုယ်စားလှယ်လောင်းများကို ပေးသည်။ HostnameEndpoint သည် hostname ကို အခြား colon ဖြင့် ခွဲထားသော ဖွဲ့စည်းမှုစာကြောင်းထဲတွင် ထည့်သွင်းခြင်းကိုလည်း ရှောင်ကြဉ်သည်။

၎င်းသည် routing input ကိုသာ ပြောင်းလဲသည်။ URL တွင် ထည့်သွင်းထားသော အထောက်အထားများသည် host နှင့် port ကို ခွဲခြမ်းထားခြင်းကြောင့်သာ ခွင့်ပြုချက် ခေါင်းစီး မဖြစ်လာပါ။ လိုအပ်သော ပံ့ပိုးထားသည့် proxy အထောက်အထား စစ်ဆေးခြင်းကို တောင်းဆိုမှု၏ အထောက်အထားစစ်ဆေးမှု အစီအစဉ်ဖြင့် ပေးပါ။ ရိုးရှင်းသော HTTP ဦးတည်ရာနှင့် Basic ပေးသော ကြားခံအတွက် ProxyAgent ၏ Basic တောင်းဆိုမှု ခေါင်းစီးများသည် ထိုသို့သော အစီအစဉ်တစ်ခုကို ပေးသည်။

HTTPS proxy URL သည် proxy သို့ TLS ကို ပံ့ပိုးနိုင်သော ချိတ်ဆက်မှု လိုအပ်သည်။ SOCKS URL သည် SOCKS ညှိနှိုင်းမှု လိုအပ်သည်။ ထို scheme များကို ရိုးရှင်းသော HTTP ProxyAgent endpoint ပြောင်းလဲမှုသို့ ပို့ခြင်းဖြင့် နှစ်ခုစလုံး အကောင်အထည်မဖော်ပါ။

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