Maison > développement back-end > Golang > Comment utiliser des proxys avec les requêtes UTLS et HTTP 1.1 ?

Comment utiliser des proxys avec les requêtes UTLS et HTTP 1.1 ?

Susan Sarandon
Libérer: 2024-11-19 11:29:03
original
583 Les gens l'ont consulté

How to Use Proxies with UTLS and HTTP 1.1 Requests?

Utiliser des proxys avec les requêtes UTLS et HTTP 1.1

Question :

Comment vous connectez-vous à un hôte utilisant UTLS avec une empreinte TLS aléatoire tout en utilisant un proxy HTTP ou SOCKS5 ?

Réponse :

Pour utiliser des proxys avec des requêtes UTLS et HTTP 1.1, vous pouvez suivez ces étapes :

1. Créez un numéroteur proxy :

Tout d'abord, créez un numéroteur proxy qui composera le proxy et renverra un net.Conn. Voici un exemple simplifié :

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)
}
Copier après la connexion

2. Composez le proxy et créez un client UTLS :

Une fois que vous disposez d'un numéroteur proxy, composez le proxy pour créer un net.Conn. Ensuite, utilisez ce net.Conn lors de la création du client UTLS, avant l'établissement de la liaison. Par exemple :

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

uconn := utls.UClient(conn, cfg, &utls.HelloRandomizedALPN)
Copier après la connexion

3. Envoyer une requête HTTP via une connexion UTLS :

Enfin, vous pouvez utiliser la connexion UTLS pour envoyer une requête HTTP 1.1. Voici comment procéder :

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
}
Copier après la connexion

Conseils supplémentaires :

  • Pensez à utiliser le module « connectproxy » pour les proxys HTTP CONNECT.
  • Explorez la source de transport enfichable Meek pour Tor, qui simplifie la gestion des proxy pour les requêtes UTLS et HTTP 1.1.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal