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 хариу байхгүй, вэбсайтын хариултад тусдаа толгойнууд байна.

Холбоотой нийтлэлүүд