Beim Aufbau von UTLS-Verbindungen kann es erforderlich sein, einen Proxy zu verwenden, beispielsweise einen HTTP- oder SOCKS5-Proxy. Um dies zu erreichen, können Sie die folgenden Strategien nutzen:
Zuerst müssen Sie eine benutzerdefinierte Proxy-Dialer-Funktion erstellen. Diese Funktion hat die Form dialTLS(network, addr string, _ *tls.Config) (net.Conn, error). Mit dieser Funktion können Sie den Proxy anwählen, um eine net.Conn aufzubauen. Verwenden Sie anschließend net.Conn, um einen UTLS-Client zu erstellen, bevor Sie den Handshake durchführen.
Unten finden Sie ein Beispiel dafür, wie Ihre benutzerdefinierte dialTLS-Funktion aussehen könnte:
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 }
Hier sind einige zusätzliche Tipps:
Das obige ist der detaillierte Inhalt vonWie stelle ich UTLS-Verbindungen über HTTP 1.1 Proxy her?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!