Go-ს CONNECT სტატუსის დაკვირვება OnProxyConnectResponse-ში
დააინსტალირეთ hook transport-ზე მოთხოვნებამდე; nil-ის დაბრუნება ინარჩუნებს გვირაბის სტატუსის ჩვეულებრივ შემოწმებას.
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}გამოიყენეთ context, net/http და net/url; სტანდარტული ტიპის მტკიცება ვარაუდობს, რომ ეს transport დაყენებული რჩება. proxyURL ანალიზდება, ხოლო observeConnect უნდა იყოს პარალელიზმის მიმართ უსაფრთხო. დაშვებული საჯარო HTTPS შემოწმებებისთვის HTTP პროქსიების სია გვთავაზობს კანდიდატებს ამ proxy URL-ისთვის.
Callback მუშაობს CONNECT-ის წარმატებულ 200-ზე შემოწმებამდე, ამიტომ მას შეუძლია 407-ის დაკვირვებაც. Nil აგრძელებს ჩვეულებრივ შემოწმებას და არ იღებს უარყოფილ გვირაბს; შეცდომა მოთხოვნას ამარცხებს.
X-Proxy-Region პროვაიდერის მიერ განსაზღვრული მაგალითია. წაიკითხეთ სტატუსი და სათაურები აქ, ხოლო სხეულისა და socket-ის მფლობელობა დატოვეთ Transport-ს, რომელიც შემდეგ მიმართულების TLS-ს ამუშავებს.
ეს აკვირდება ახალი გვირაბის დამყარებას და არა ყველა მოთხოვნას. ხელახლა გამოყენებულ კავშირს ახალი CONNECT პასუხი არ აქვს, ხოლო ვებსაიტის პასუხს ცალკე სათაურები აქვს.