github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/02_http/proxy/client/client.go (about)

     1  package main
     2  
     3  import (
     4  	"crypto/tls"
     5  	"fmt"
     6  	"net/http"
     7  	"net/http/httputil"
     8  	"net/url"
     9  )
    10  
    11  func main() {
    12  	u, err := url.Parse("https://localhost:443")
    13  	if err != nil {
    14  		panic(err)
    15  	}
    16  	tr := &http.Transport{
    17  		Proxy: http.ProxyURL(u),
    18  		// Disable HTTP/2.
    19  		TLSNextProto:    make(map[string]func(authority string, c *tls.Conn) http.RoundTripper),
    20  		TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, // 不验证证书
    21  
    22  	}
    23  	client := &http.Client{Transport: tr}
    24  	resp, err := client.Get("https://www.baidu.com")
    25  	if err != nil {
    26  		panic(err)
    27  	}
    28  	defer resp.Body.Close()
    29  	dump, err := httputil.DumpResponse(resp, true)
    30  	if err != nil {
    31  		panic(err)
    32  	}
    33  	fmt.Printf("%s", dump)
    34  }