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

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

DDD
DDD원래의
2024-11-27 10:59:10763검색

How to Establish UTLS Connections Through Proxies with HTTP 1.1 Requests?

UTLS 및 HTTP 1.1 요청을 사용하는 동안 프록시를 통해 연결

UTLS 및 HTTP 1.1 요청을 사용하는 동안 프록시를 통해 연결을 설정하려면 특정 요구 사항이 필요합니다. 구성.

문제:

무작위 TLS 지문 채취를 위해 UTLS 연결을 여는 동안 HTTP 또는 SOCKS5 프록시를 어떻게 활용할 수 있습니까?

답변:

UTLS 연결에 프록시를 활용하려면, 다음 단계를 따르십시오.

  1. 프록시 다이얼러 생성: 프록시 유형(HTTP 또는 SOCKS5)을 결정하고 적절한 프록시 다이얼러(예: HTTP 또는 SOCKS5용 connectproxy.New())를 생성합니다. SOCKS5의 경우 proxy.SOCKS5()).
  2. 프록시: 프록시 다이얼러를 사용하여 프록시에 대한 net.Conn 연결을 설정합니다.
  3. UTLS 클라이언트 구성: 다음을 사용하여 UTLS 클라이언트(예: tls.UClient())를 초기화합니다. 프록시 다이얼에서 얻은 net.Conn입니다.

다음은 사용자 정의의 예입니다. 프록시 연결을 수용하는 다이얼TLS 기능:

package main

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)

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

추가 제안:

  • HTTP CONNECT 터널링을 처리하려면 "connectproxy" 모듈 사용을 고려하세요.
  • 두 가지 모두에 대한 설정 프로세스를 처리하는 Tor의 Meek 플러그형 전송을 활용합니다. SoC

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

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