Comment utiliser des proxys lors d'une connexion via UTLS et requête HTTP 1.1
Dans le domaine de la communication réseau, la possibilité de se connecter via des proxys tout en l'utilisation des requêtes UTLS (une implémentation du protocole TLS) et HTTP 1.1 est une fonctionnalité précieuse. Cela permet aux développeurs d'établir des connexions sécurisées avec les hôtes via des serveurs intermédiaires, répondant à divers scénarios d'accès au réseau et de sécurité.
Pour y parvenir, une fonction dialTLS personnalisée peut être utilisée. Cette fonction prend trois paramètres : network (le type de réseau, tel que "tcp"), addr (l'adresse à laquelle se connecter) et cfg (l'objet de configuration TLS). Voici un exemple de fonction dialTLS personnalisée qui prend en charge à la fois les proxys HTTP et SOCKS5 :
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) { // Parse the proxy URI proxyURI, _ := url.Parse(proxyString) // Create a proxy dialer based on the scheme 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) } // Dial the proxy to establish a net.Conn conn, err := proxyDialer.Dial("tcp", addr) if err != nil { return nil, err } // Create a UTLS client using the established net.Conn uconn := utls.UClient(conn, cfg, &utls.HelloRandomizedALPN) return uconn, nil }
Au sein de cette fonction, il est important de prendre en compte quelques suggestions pour améliorer sa convivialité et sa flexibilité :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!