Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich Proxys mit UTLS- und HTTP 1.1-Anfragen?

Wie verwende ich Proxys mit UTLS- und HTTP 1.1-Anfragen?

Susan Sarandon
Susan SarandonOriginal
2024-11-19 11:29:03449Durchsuche

How to Use Proxies with UTLS and HTTP 1.1 Requests?

Verwenden Sie Proxys mit UTLS- und HTTP 1.1-Anfragen

Frage:

Wie stellen Sie eine Verbindung her? an einen Host, der UTLS mit einem zufälligen TLS-Fingerabdruck verwendet und gleichzeitig HTTP oder SOCKS5 verwendet Proxy?

Antwort:

Um Proxys mit UTLS- und HTTP 1.1-Anfragen zu verwenden, können Sie die folgenden Schritte ausführen:

1. Erstellen Sie einen Proxy-Dialer:

Erstellen Sie zunächst einen Proxy-Dialer, der den Proxy anwählt und eine net.Conn zurückgibt. Hier ist ein vereinfachtes Beispiel:

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. Wählen Sie den Proxy und erstellen Sie einen UTLS-Client:

Sobald Sie einen Proxy-Dialer haben, wählen Sie den Proxy, um eine net.Conn zu erstellen. Verwenden Sie dann diese net.Conn beim Erstellen des UTLS-Clients vor dem Handshaking. Zum Beispiel:

import (
    "github.com/refraction-networking/utls"
)

uconn := utls.UClient(conn, cfg, &utls.HelloRandomizedALPN)

3. HTTP-Anfrage über UTLS-Verbindung senden:

Schließlich können Sie die UTLS-Verbindung verwenden, um eine HTTP 1.1-Anfrage zu senden. So können Sie es tun:

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
}

Zusätzliche Tipps:

  • Erwägen Sie die Verwendung des Moduls „connectproxy“ für HTTP CONNECT-Proxys.
  • Entdecken Sie die steckbare Transportquelle Meek für Tor, die die Proxy-Verarbeitung für UTLS und HTTP 1.1 vereinfacht Anfragen.

Das obige ist der detaillierte Inhalt vonWie verwende ich Proxys mit UTLS- und HTTP 1.1-Anfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn