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 เป็นตัวอย่างที่ผู้ให้บริการกำหนด อ่านสถานะและ headers ที่นี่ และปล่อยความเป็นเจ้าของ body และ socket ให้ Transport ซึ่งจะจัดการ TLS ปลายทางต่อไป

สิ่งนี้สังเกตการตั้งอุโมงค์ใหม่ ไม่ใช่ทุกคำขอ การเชื่อมต่อที่ใช้ซ้ำไม่มี CONNECT response ใหม่ และ response ของเว็บไซต์มี headers แยกต่างหาก

บทความที่เกี่ยวข้อง