SOCKS လိုဏ်ခေါင်းတစ်ခုသည် TCP ချိတ်ဆက်မှုတစ်ခုကို သယ်ဆောင်သည်။ Go သည် ထိုလိုဏ်ခေါင်းမှတစ်ဆင့် ဦးတည်ရာနှင့် TLS ပြုလုပ်နိုင်ပြီး ထိုနေရာတွင် HTTP/2 ညှိနှိုင်းနိုင်သည်။ SOCKS ဆာဗာကိုယ်တိုင် HTTP/2 ပြောရန် မလိုအပ်ပါ။

Go ၏ စံမူလ သယ်ယူပို့ဆောင်ရေးကို ထိန်းသိမ်းထားသော ပရိုဂရမ်တွင် ၎င်း၏ ဖွဲ့စည်းမှုကို ကလုန်းလုပ်ပြီး ပရောက်စီကို ရွေးပါ။

import (
    "net/http"
    "net/url"
    "time"
)

proxyURL := &url.URL{
    Scheme: "socks5",
    Host: "proxy.example:1080",
}
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.Proxy = http.ProxyURL(proxyURL)
client := &http.Client{
    Transport: transport,
    Timeout: 30 * time.Second,
}

ပရောက်စီနှင့် ဦးတည်ရာသည် မတူညီသော တန်ဖိုးများအဖြစ် ကျန်ရှိနေသည်။ ပရောက်စီတန်ဖိုးအတွက် SOCKS5 ပရောက်စီစာရင်းမှ SOCKS5 အဆုံးမှတ်ကို ရွေးပါ။ HTTP/2 ကို ဦးတည်ရာနှင့် ဆက်လက် ညှိနှိုင်းနေဆဲဖြစ်သည်။ အမှန်တကယ် HTTPS ဝန်ဆောင်မှု URL ကို တောင်းဆိုရန် client ကို အသုံးပြုပြီး ထို့နောက် အပလီကေးရှင်း၏ ပုံမှန် သက်တမ်းစက်ဝန်းအတွင်း တုံ့ပြန်မှုကိုယ်ထည်ကို ပိတ်ပါ။

စံမူလ သယ်ယူပို့ဆောင်ရေးသည် HTTP/2 ကို ပံ့ပိုးသည်။ ၎င်းကို ကလုန်းလုပ်ခြင်းက ထိုဖွဲ့စည်းမှုကို ထိန်းသိမ်းပြီး ပရောက်စီရွေးချယ်မှုကို ပြောင်းလဲနိုင်စေသည်။ အမျိုးအစား စစ်ဆေးမှုသည် ပရိုဂရမ်က http.DefaultTransport ကို အခြား RoundTripper ဖြင့် အစားမထိုးခဲ့ဟု ယူဆသည်။

သီးခြားတည်ဆောက်ထားသော သယ်ယူပို့ဆောင်ရေးအတွက် ၎င်း၏ HTTP/2 ဖွဲ့စည်းမှုကို ပြန်လည်သုံးသပ်ပါ၊ အထူးသဖြင့် စိတ်ကြိုက် dial သို့မဟုတ် TLS ချိတ်များ ပေးအပ်သောအခါ။ Go သည် ForceAttemptHTTP2 နှင့် ဗားရှင်းအသစ်များတွင် ထိုရွေးချယ်မှုများအတွက် တိကျသော Protocols ဖွဲ့စည်းမှုကို ဖော်ထုတ်ပေးသည်။

ဦးတည်ရာသည် TLS ညှိနှိုင်းမှုမှတစ်ဆင့် HTTP/2 ကို ဆက်လက် ကမ်းလှမ်းရမည်။ မည်သည့်အရာ အသုံးပြုခဲ့သည်ကို ကြည့်ရန် အောင်မြင်သော တုံ့ပြန်မှု၏ Proto သို့မဟုတ် ProtoMajor တန်ဖိုးကို စစ်ဆေးပါ။ SOCKS မှတစ်ဆင့် အောင်မြင်သော HTTPS တောင်းဆိုမှုသည် ညှိနှိုင်းခဲ့သော ပရိုတိုကောသည် HTTP/2 ဖြစ်ခဲ့သည်ကို သူ့အလိုလို သက်သေမပြပါ။

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