首頁 > 後端開發 > Golang > 主體

如何對 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 或SOCKS5 時使用隨機TLS 指紋的UTLS 到主機代理程式?

答案:

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)
}
登入後複製

要在 UTLS 和 HTTP 1.1請求中使用代理,您可以按照以下步驟操作:

1.建立代理撥號器:

import (
    "github.com/refraction-networking/utls"
)

uconn := utls.UClient(conn, cfg, &utls.HelloRandomizedALPN)
登入後複製
首先,建立一個代理撥號器,它將撥打代理並返回net.Conn。這是一個簡化的範例:

2.撥打代理並建立UTLS 客戶端:

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
}
登入後複製
一旦您擁有代理撥號器,請撥打代理程式以建立net.Conn。然後,在握手之前建立 UTLS 用戶端時使用該 net.Conn。例如:

3。透過 UTLS 連線發送 HTTP 請求:
  • 最後,您可以使用 UTLS 連線發送 HTTP 1.1 請求。具體操作方法如下:
其他提示:考慮使用「connectproxy」模組作為 HTTP CONNECT 代理。 探索 Tor 的 Meek 可插拔傳輸來源,它簡化了代理處理UTLS 和 HTTP 1.1 請求。

以上是如何對 UTLS 和 HTTP 1.1 請求使用代理程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板