Ṣàkíyèsí ipò CONNECT ti Go nínú OnProxyConnectResponse
Fi hook sórí transport kí o tó ṣe àwọn ìbéèrè; pípadà nil ń dáàbò bo ìṣàyẹ̀wò ipò tunnel déédéé.
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.Proxy = http.ProxyURL(proxyURL)
transport.OnProxyConnectResponse = func(
_ context.Context,
_ *url.URL,
_ *http.Request,
response *http.Response,
) error {
observeConnect(response.StatusCode, response.Header.Get("X-Proxy-Region"))
return nil
}
client := &http.Client{Transport: transport}Lo context, net/http àti net/url; ìdánilójú irú ọ̀nà ìpìlẹ̀ gbà pé transport yẹn wà ní ìfisórí. A ń ṣàyẹ̀wò proxyURL, observeConnect sì gbọ́dọ̀ ní ààbò fún ìgbàṣe ní àkókò kan náà. Fún àwọn àyẹ̀wò HTTPS gbogbo ènìyàn tí a gbà láyè, Àkójọ proxy HTTP ń pèsè àwọn olùdíje fún URL proxy yẹn.
Callback náà ń ṣiṣẹ́ kí a tó ṣàyẹ̀wò CONNECT fún 200 tí ó ṣàṣeyọrí, nítorí náà ó lè tún ṣàkíyèsí 407. Nil ń tẹ̀síwájú ìṣàyẹ̀wò déédéé kò sì gba tunnel tí a kọ̀; àṣìṣe ń mú kí ìbéèrè kùnà.
X-Proxy-Region jẹ́ àpẹẹrẹ tí olùpèsè ṣàlàyé. Ka ipò àti àwọn àkọlé níbí kí o sì fi ẹ̀tọ́ ara àti socket fún Transport, tí yóò tó ṣàkóso TLS ibi-àfojúsùn.
Èyí ń ṣàkíyèsí ìdásílẹ̀ tunnel tuntun, kì í ṣe gbogbo ìbéèrè. Ìsopọ̀ tí a tún lò kò ní ìdáhùn CONNECT tuntun, àwọn àkọlé ìdáhùn ojú-ìwé sì yàtọ̀.