jsoup တွင် HTTP proxy မှတစ်ဆင့် စာမျက်နှာ ရယူခြင်း
jsoup ၏ တောင်းဆိုမှုအဆင့် HTTP proxy API ကို အသုံးပြုပြီး လုပ်သားများစွာ ဆက်ရှင် ဆက်တင်များကို မျှဝေသည့်အခါ သီးခြား တောင်းဆိုမှုများ ဖန်တီးပါ။
jsoup သည် HTTP proxy မှတစ်ဆင့် စာမျက်နှာကို ရယူနိုင်ပြီး တုံ့ပြန်မှုကို တူညီသော ခေါ်ဆိုမှုတွင် ပိုင်းခြားစိတ်ဖြာနိုင်သည်-
Document page = Jsoup.connect("https://www.example.com/")
.proxy("proxy.example", 8080)
.get();
hostname နှင့် ကိန်းပြည့် port က proxy ကို ခွဲခြားသည်။ ခွင့်ပြုထားသော အများပြည်သူ စာမျက်နှာများအတွက် တောင်းဆိုမှုများအတွက် သင့်ဝန်ဆောင်မှုမှ သို့မဟုတ် HTTP proxy စာရင်း မှ HTTP endpoint တစ်ခုကို ရွေးပါ။ connect သို့ ပေးပို့သော URL သည် သင်လိုချင်သော စာမျက်နှာအဖြစ် ဆက်ရှိသည်။ ဤလမ်းကြောင်းကို ထည့်ရန်အတွက်သာ HTML ကို သီးခြား URLConnection ဖြင့် စာတန်းအဖြစ် ဒေါင်းလုဒ်လုပ်ရန် မလိုအပ်ပါ။
proxy(String, int) သည် ထို တောင်းဆိုမှုအတွက် HTTP proxy ကို ရွေးသည်။ 1080 ကဲ့သို့ port နံပါတ်သည် ၎င်း၏ ပရိုတိုကောကို SOCKS အဖြစ် မပြောင်းလဲပါ။ proxy endpoint သည် ပြင်ဆင်နေသော အမျိုးအစားကို ပြောဆိုရမည်။ jsoup သည် java.net.Proxy ကို လက်ခံသော overload ကိုလည်း ထုတ်ဖော်ထားသော်လည်း သီးခြားလမ်းကြောင်းအတွက် ပံ့ပိုးမှုသည် အသုံးပြုနေသော HTTP အကောင်အထည်ဖော်မှုအပေါ် မူတည်နေဆဲဖြစ်သည်။
လုပ်သားတိုင်းကို ၎င်း၏ကိုယ်ပိုင် တောင်းဆိုမှု ပေးပါ
တောင်းဆိုမှုအဆင့် ရွေးချယ်မှုသည် ဒေါင်းလုဒ်တစ်ခုစီ၏ ပတ်လည်တွင် JVM စနစ် ဂုဏ်သတ္တိများ ပြောင်းလဲခြင်းထက် အပြိုင်အလုပ်ကို ပိုမိုလွယ်ကူစေသည်။ ပြောင်းလဲနိုင်သော တောင်းဆိုမှုကို လုပ်သားတစ်ဦးစီအတွက် သီးခြား ထားရှိပါ။ ခေတ်သစ် jsoup သည် တောင်းဆိုမှုအသစ် ဖန်တီးစဉ် ဆက်ရှင်၏ ဆက်တင်များနှင့် cookie သိုလှောင်ရာကို မျှဝေနိုင်သည်-
Connection session = Jsoup.newSession();
Document first = session.newRequest()
.url("https://www.example.com/one")
.proxy("proxy-a.example", 8080)
.get();
Document second = session.newRequest()
.url("https://www.example.com/two")
.proxy("proxy-b.example", 8080)
.get();
အထက်ပါ ခေါ်ဆိုမှုများသည် ရှင်းလင်းမှုအတွက် အစဉ်လိုက် လုပ်ဆောင်သည်။ အလုပ်ကို တစ်ပြိုင်နက် ဖြန့်ဝေပါက လုပ်ဆောင်နေသော Connection တစ်ခုတွင် proxy ကို ပြောင်းလဲမည့်အစား တောင်းဆိုမှုများကို သီးခြား ဖန်တီးပါ။ မျှဝေထားသော ဆက်ရှင်သည် cookie များကိုလည်း မျှဝေသည်။ ရှာဖွေခြင်း အထောက်အထားများကို သီးခြား ထားရှိရန် လိုအပ်ပါက မတူညီသော ဆက်ရှင်များကို အသုံးပြုပါ။
ဤ အင်တာဖေ့စ်များသည် jsoup 1.21.2 တွင် ရှိသည်။ အာဂျူမင့် မပါသော newRequest() အင်တာဖေ့စ်သည် 1.14.1 မှ ဖြစ်သောကြောင့် အဟောင်း အပလီကေးရှင်းသည် ဆက်ရှင် ဥပမာကို မလိုက်နာမီ ၎င်း၏ မှီခိုမှုကို စစ်ဆေးသင့်သည်။
အထောက်အထားများသည် စစ်မှန်ကြောင်း အတည်ပြုထားသော proxy အတွက် ထပ်ဆောင်း လိုအပ်ချက် ဖြစ်သည်။ အောင်မြင်သော လမ်းကြောင်း ရွေးချယ်မှုသည် အကောင့် မပေးပါ၊ ပြီးတော့ proxy စိန်ခေါ်မှုကို လက်ခံခြင်းသည် ၎င်း၏ port သို့ မချိတ်ဆက်နိုင်ခြင်းနှင့် မတူပါ။