UTLS 및 HTTP 1.1 요청에 프록시 사용
질문:
연결 방법 HTTP를 활용하는 동안 무작위 TLS 지문과 함께 UTLS를 사용하는 호스트에 SOCKS5 프록시?
답변:
UTLS 및 HTTP 1.1 요청에 프록시를 사용하려면 다음 단계를 따르세요.
1. 프록시 다이얼러 만들기:
먼저 프록시에 전화를 걸어 net.Conn을 반환하는 프록시 다이얼러를 만듭니다. 다음은 간단한 예입니다.
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. 프록시 다이얼링 및 UTLS 클라이언트 생성:
프록시 다이얼러가 있으면 프록시에 다이얼하여 net.Conn을 생성합니다. 그런 다음 핸드셰이크 전에 UTLS 클라이언트를 생성할 때 해당 net.Conn을 사용하십시오. 예:
import ( "github.com/refraction-networking/utls" ) uconn := utls.UClient(conn, cfg, &utls.HelloRandomizedALPN)
3. UTLS 연결을 통해 HTTP 요청 보내기:
마지막으로 UTLS 연결을 사용하여 HTTP 1.1 요청을 보낼 수 있습니다. 이를 수행하는 방법은 다음과 같습니다.
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 }
추가 팁:
위 내용은 UTLS 및 HTTP 1.1 요청에 프록시를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!