UTLS 및 HTTP 1.1 요청에 프록시를 사용하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-19 11:29:03
원래의
449명이 탐색했습니다.

How to Use Proxies with UTLS and HTTP 1.1 Requests?

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
}
로그인 후 복사

추가 팁:

  • HTTP CONNECT 프록시용 "connectproxy" 모듈 사용을 고려해보세요.
  • Tor용 Meek 플러그형 전송 소스를 탐색해 보세요. Tor는 프록시 처리를 단순화합니다. UTLS 및 HTTP 1.1 요청.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿