ອຸໂມງ 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 ຍັງຖືກເຈລະຈາກັບປາຍທາງ. ໃຊ້ client ເພື່ອຂໍ URL ບໍລິການ HTTPS ທີ່ແທ້ຈິງ, ແລ້ວປິດເນື້ອຫາການຕອບສະໜອງຜ່ານວົງຈອນຊີວິດປົກກະຕິຂອງແອັບພລິເຄຊັນ.

ການຂົນສົ່ງຄ່າເລີ່ມຕົ້ນມາດຕະຖານຮອງຮັບ HTTP/2. ການຄັດລອກມັນຮັກສາການຕັ້ງຄ່ານັ້ນ ໃນຂະນະທີ່ອະນຸຍາດໃຫ້ປ່ຽນການເລືອກພຣັອກຊີ. ການກວດຊະນິດສົມມຸດວ່າໂປຣແກຣມບໍ່ໄດ້ແທນ http.DefaultTransport ດ້ວຍ RoundTripper ອື່ນ.

ສຳລັບການຂົນສົ່ງທີ່ສ້າງແຍກຕ່າງຫາກ, ໃຫ້ທົບທວນການຕັ້ງຄ່າ HTTP/2 ຂອງມັນ, ໂດຍສະເພາະເມື່ອໃຫ້ dial ຫຼື TLS hook ທີ່ກຳນົດເອງ. Go ເປີດເຜີຍ ForceAttemptHTTP2 ແລະ ໃນສະບັບໃໝ່ກວ່າ, ການຕັ້ງຄ່າ Protocols ຢ່າງຊັດເຈນສຳລັບການເລືອກເຫຼົ່ານັ້ນ.

ປາຍທາງຍັງຕ້ອງສະເໜີ HTTP/2 ຜ່ານການເຈລະຈາ TLS. ກວດເບິ່ງຄ່າ Proto ຫຼື ProtoMajor ຂອງການຕອບສະໜອງທີ່ສຳເລັດ ເພື່ອເບິ່ງວ່າໃຊ້ຫຍັງ. ຄຳຂໍ HTTPS ທີ່ສຳເລັດຜ່ານ SOCKS ບໍ່ໄດ້ພິສູດໃນຕົວມັນເອງວ່າໂປຣໂຕຄອນທີ່ເຈລະຈາກັນແມ່ນ HTTP/2.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ