UTLS および HTTP 1.1 リクエストでプロキシを使用する
質問:
接続方法HTTP またはSOCKS5 プロキシ?
回答:
UTLS および HTTP 1.1 リクエストでプロキシを使用するには、次の手順に従います:
1.プロキシ ダイヤラーの作成:
まず、プロキシにダイヤルして net.Conn を返すプロキシ ダイヤラーを作成します。簡略化した例を次に示します。
import ( "net/url" "github.com/magisterquis/connectproxy" "golang.org/x/net/proxy" ) var proxyString = "http://127.0.0.1:8080" dialTLS := func(network, addr string, _ *tls.Config) (net.Conn, error) { proxyURI, _ := url.Parse(proxyString) var proxyDialer proxy.Dialer switch proxyURI.Scheme { case "socks5": proxyDialer, _ = proxy.SOCKS5("tcp", proxyString, nil, proxy.Direct) case "http": proxyDialer, _ = connectproxy.New(proxyURI, proxy.Direct) } return proxyDialer.Dial("tcp", addr) }
2.プロキシにダイヤルして UTLS クライアントを作成します:
プロキシ ダイヤラーを作成したら、プロキシにダイヤルして net.Conn を作成します。次に、ハンドシェイクの前に、UTLS クライアントを作成するときにその net.Conn を使用します。例:
import ( "github.com/refraction-networking/utls" ) uconn := utls.UClient(conn, cfg, &utls.HelloRandomizedALPN)
3. UTLS 接続経由で HTTP リクエストを送信する:
最後に、UTLS 接続を使用して HTTP 1.1 リクエストを送信できます。その方法は次のとおりです:
req := &http.Request{ Method: "GET", URL: &url.URL{Host: "www.example.com", Path: "/"}, Header: make(http.Header), } req.Proto = "HTTP/1.1" req.ProtoMajor = 1 req.ProtoMinor = 1 if err := req.Write(uconn); err != nil { return nil, err }
追加のヒント:
以上がUTLS および HTTP 1.1 リクエストでプロキシを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。