Ọ̀nà SOCKS ń gbé ìsopọ̀ TCP kan. Go lè ṣe TLS pẹ̀lú ibi-àfojúsùn nípasẹ̀ ọ̀nà yẹn, kí ó sì ṣe ìdúnàádúrà HTTP/2 níbẹ̀; server SOCKS fúnra rẹ̀ kò nílò láti sọ HTTP/2.

Nínú ètò kan tí ó ń pa gbígbé àkọ́kọ́ Go mọ́, ṣe àdàkọ ìṣètò rẹ̀ kí o sì yan proxy:

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,
}

Proxy àti ibi-àfojúsùn wà ní iye ọ̀tọ̀ọ̀tọ̀. Yan ojú-ìparí SOCKS5 kan láti àkójọ proxy SOCKS5 fún iye proxy; HTTP/2 ṣì ń ṣe ìdúnàádúrà pẹ̀lú ibi-àfojúsùn. Lo client láti béèrè URL iṣẹ́ HTTPS gidi, lẹ́yìn náà pa ara ìdáhùn mọ́ nípasẹ̀ ìyí-ayé deede ti ètò náà.

Gbígbé àkọ́kọ́ àkọ́kọ́ ń ṣe àtìlẹ́yìn HTTP/2. Àdàkọ rẹ̀ ń pa ìṣètò yẹn mọ́ nígbà tí ó ń jẹ́ kí yíyan proxy lè yí padà. Àyẹ̀wò irú ń rò pé ètò náà kò tíì fi RoundTripper mìíràn rọ́pò http.DefaultTransport.

Fún gbígbé tí a kọ́ lọ́tọ̀ọ̀tọ̀, ṣàyẹ̀wò ìṣètò HTTP/2 rẹ̀, pàápàá nígbà tí o bá ń pèsè dial tàbí TLS hook àkànṣe. Go ń fi ForceAttemptHTTP2 hàn àti, nínú àwọn ìtúsílẹ̀ tuntun, ìṣètò Protocols kedere fún àwọn yíyan yẹn.

Ibi-àfojúsùn ṣì gbọ́dọ̀ pèsè HTTP/2 nípasẹ̀ ìdúnàádúrà TLS. Ṣàyẹ̀wò iye Proto tàbí ProtoMajor ti ìdáhùn aṣeyọrí láti rí ohun tí wọ́n lò. Ìbéèrè HTTPS tí ó ṣàṣeyọrí nípasẹ̀ SOCKS kò fi ara rẹ̀ hàn pé ìlànà tí wọ́n gbà lórí ẹ̀ ni HTTP/2.

Àwọn àpilẹ̀kọ tó jọra