>백엔드 개발 >Golang >HTTP 1.1 프록시를 통해 UTLS 연결을 설정하는 방법은 무엇입니까?

HTTP 1.1 프록시를 통해 UTLS 연결을 설정하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-15 13:29:02851검색

How to Establish UTLS Connections via HTTP 1.1 Proxy?

HTTP 1.1을 통한 프록시 UTLS 연결

UTLS 연결을 설정할 때 HTTP 또는 SOCKS5 프록시와 같은 프록시를 활용해야 할 수도 있습니다. 이를 달성하려면 다음 전략을 활용할 수 있습니다.

먼저 사용자 정의 프록시 다이얼러 기능을 만들어야 합니다. 이 함수는 다이얼TLS(network, addr string, _ *tls.Config) (net.Conn, error) 형식을 취합니다. 이 기능을 사용하면 프록시에 전화를 걸어 net.Conn을 설정할 수 있습니다. 그런 다음 핸드쉐이크를 수행하기 전에 net.Conn을 사용하여 UTLS 클라이언트를 생성하십시오.

다음은 사용자 정의 다이얼TLS 기능이 어떻게 보일 수 있는지에 대한 예입니다.

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) {
    proxyURI, _ := url.Parse(proxyString)

    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)
    }

    conn, err := proxyDialer.Dial("tcp", addr)
    uconn := utls.UClient(conn, cfg, &utls.HelloRandomizedALPN)
    // ... continue handshake and request
}

여기에 몇 가지 추가 사항이 있습니다. 팁:

  • HTTP CONNECT를 통해 터널링하려는 경우 "connectproxy" 모듈 사용을 고려하세요. 프록시.
  • Tor용 Meek 플러그형 전송 소스를 살펴보세요. 'utls.go' 모듈은 협상된 ALPN 프로토콜을 기반으로 HTTP 또는 HTTP2 전송 설정을 포함하여 프로세스를 단순화합니다. 현재 SOCKS를 지원하지만 HTTP 프록시에 맞게 조정할 수도 있습니다.

위 내용은 HTTP 1.1 프록시를 통해 UTLS 연결을 설정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.