UTLS 接続を確立するとき、HTTP や SOCKS5 プロキシなどのプロキシを利用する必要が生じる場合があります。これを実現するには、次の戦略を活用できます。
まず、カスタム プロキシ ダイヤラー関数を作成する必要があります。この関数は、dialTLS(network, addr string, _ *tls.Config) (net.Conn, error) の形式をとります。この機能を使用すると、プロキシにダイヤルして net.Conn を確立できます。その後、ハンドシェイクを実行する前に、net.Conn を使用して UTLS クライアントを作成します。
以下は、カスタム DialTLS 関数がどのように見えるかの例です。
import ( "crypto/tls" "net" "net/url" "github.com/magisterquis/connectproxy" "golang.org/x/net/proxy" utls "github.com/refraction-networking/utls" ) 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, err = proxy.SOCKS5("tcp", proxyString, nil, proxy.Direct) case "http": proxyDialer, err = connectproxy.New(proxyURI, proxy.Direct) } conn, err := proxyDialer.Dial("tcp", addr) uconn := utls.UClient(conn, cfg, &utls.HelloRandomizedALPN) // ... continue handshake and request }
ここに追加の機能がいくつかあります。ヒント:
以上がHTTP 1.1 プロキシ経由で UTLS 接続を確立するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。