HTTP/2 ພໍດີຢູ່ໃນອຸໂມງ SOCKS ຂອງ Go
ຄັດລອກການຂົນສົ່ງ HTTP ມາດຕະຖານ, ເລືອກພຣັອກຊີ SOCKS ແລະ ກວດເບິ່ງໂປຣໂຕຄອນປາຍທາງທີ່ໄດ້ເຈລະຈາກັນຈິງ.
ອຸໂມງ 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.