Gunakan Proksi dengan UTLS dan Permintaan HTTP 1.1
Soalan:
Bagaimana anda menyambung kepada hos menggunakan UTLS dengan cap jari TLS rawak sambil menggunakan HTTP atau SOCKS5 proksi?
Jawapan:
Untuk menggunakan proksi dengan permintaan UTLS dan HTTP 1.1, anda boleh mengikuti langkah berikut:
1. Cipta Pendail Proksi:
Pertama, buat pendail proksi yang akan mendail proksi dan mengembalikan jaring.Samb. Berikut ialah contoh ringkas:
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. Dail Proksi dan Buat Pelanggan UTLS:
Setelah anda mempunyai pendail proksi, dail proksi untuk mencipta jaringan.Samb. Kemudian, gunakan net.Conn itu semasa mencipta Klien UTLS, sebelum berjabat tangan. Contohnya:
import ( "github.com/refraction-networking/utls" ) uconn := utls.UClient(conn, cfg, &utls.HelloRandomizedALPN)
3. Hantar Permintaan HTTP melalui Sambungan UTLS:
Akhir sekali, anda boleh menggunakan sambungan UTLS untuk menghantar permintaan HTTP 1.1. Begini cara anda boleh melakukannya:
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 }
Petua Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Proksi dengan Permintaan UTLS dan HTTP 1.1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!