collector := colly.NewCollector()
switcher, err := proxy.RoundRobinProxySwitcher(
    "http://proxy-a.example:8080",
    "http://proxy-b.example:8080",
)
if err != nil {
    return err
}
collector.SetProxyFunc(switcher)
err = collector.Visit("https://www.example.com/")

အပလီကေးရှင်း၏ ဖန်ရှင်တွင် github.com/gocolly/colly/v2 နှင့် ၎င်း၏ proxy ပက်ကေ့ဂျ်ကို အသုံးပြုပြီး ပုံမှန် အမှားကိုင်တွယ်မှုကို ထိန်းသိမ်းပါ။ တောင်းဆိုမှုများ သို့မဟုတ် အဆင့်မသတ်မှတ်ထားသော ဝင်ရောက်ကြည့်ရှုမှုများ မစတင်မီ ရွေးချယ်ကိရိယာကို ကွန်ဖစ်ဂျာလုပ်ပါ။ HTTP ပရောက်စီ စာရင်းသည် ခလုတ်ပြောင်း၏ endpoint ထည့်သွင်းမှုများအတွက် အများပြည်သူ ကိုယ်စားလှယ်လောင်းများကို ပေးသည်။

SetProxy သည် ပုံသေ endpoint ကို ရွေးသည်၊ SetProxyFunc သည် HTTP transport ကို တောင်းဆိုမှုတစ်ခုစီအတွက် ရွေးခွင့်ပြုသည်။ ယင်းက OnRequest ကော်လ်ဘက်တစ်ခုစီအတွင်း မျှဝေထားသော ကွန်ဖစ်ဂျာကို အစားထိုးခြင်းကို ရှောင်ရှားသည်။

ဤအကောင်အထည်ဖော်မှုတွင် SetProxyFunc သည် DisableKeepAlives ကိုလည်း true အဖြစ် သတ်မှတ်သည်။ ၎င်းသည် ရှိပြီးသား *http.Transport ကို အပ်ဒိတ်လုပ်သော်လည်း မတူညီသော transport အမျိုးအစားကို HTTP transport အသစ်ဖြင့် အစားထိုးသည်။ မည်သည့် စိတ်ကြိုက် RoundTripper အပြုအမူကိုမဆို ၎င်းဆက်ရှိနေမည်ဟု ယူဆမည့်အစား ရည်ရွယ်ချက်ရှိရှိ ထိန်းသိမ်းပါ။

Collector.Clone သည် HTTP backend ကို မျှဝေသည်၊ ထို့ကြောင့် ကလုန်းတစ်ခု၏ ပရောက်စီကို ပြောင်းခြင်းသည် ထို မျှဝေ backend ကို ပြောင်းနိုင်သည်။ တစ်ပြိုင်နက် အလုပ်မလုပ်မီ ပိုင်ဆိုင်မှုကို သတ်မှတ်ပါ။ အလှည့်ကျ ရွေးချယ်မှုသည် ပေးထားသော endpoint များကို လှည့်ပတ်သည်၊ အတည်ပြုပြီး အများပြည်သူ ထွက်ပေါက် အထောက်အထား သို့မဟုတ် သီးခြားစစ်ဆေးထားသော ရရှိနိုင်မှုကို မဟုတ်ပါ။

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