首頁 >後端開發 >Golang >如何透過代理程式與 HTTP 1.1 請求建立 UTLS 連線?

如何透過代理程式與 HTTP 1.1 請求建立 UTLS 連線?

DDD
DDD原創
2024-11-27 10:59:10764瀏覽

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

使用 UTLS 和 HTTP 1.1 請求時透過代理連線

使用 UTLS 和 HTTP 1.1請求時透過代理建立連線需要特定的

問題:

我們如何在開啟 UTLS 連線進行隨機 TLS 指紋辨識時利用 HTTP 或 SOCKS5 代理程式?

答案:

要使用代理進行UTLS 連接,請遵循以下步驟步驟:

  1. 建立代理撥號器: 確定代理類型(HTTP 或SOCKS5)並建立適當的代理撥號器(例如,用於HTTP或代理的 connectproxy.New() )。 SOCKS5() for SOCKS5)。
  2. 撥打代理:使用代理撥號器建立與代理的 net.Conn 連線。
  3. 設定 UTLS 用戶端: 使用取得的 net.Conn 初始化 UTLS 用戶端(例如 tls.UClient())來自代理撥號。

這是一個適應代理的自定義dialTLS 函數的示例連接:

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

其他建議:

  • 考慮使用“connectproxy”模組來處理HTTP CONNECT 隧道。
  • 利用Tor 的 Meek 可插拔傳輸,可處理兩者的設定流程SoC

以上是如何透過代理程式與 HTTP 1.1 請求建立 UTLS 連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn