簡體   English   中英

是否可以在 Go 中將代理/襪子與 http2 客戶端一起使用?

[英]Is it possible to use proxy/socks with http2 client in Go?

我發現,http2 包中傳輸的實現不支持 http2 客戶端的代理/襪子。 有沒有簡單的方法讓它工作?

是的,我似乎想起了不久前關於 http2 客戶端不使用 HTTP/SOCKS5 代理的事情。 無論如何,時間已經過去了,下面的工作正常(如果這就是你所追求的)。 請注意,如果在傳輸中使用自定義 DialTLS,則仍不支持代理連接。

package main

import (
    "log"
    "net/http"
    "net/url"
)

func main() {
    var addressString = "https://www.facebook.com/"
    var proxyString = "socks5://127.0.0.1:9150"

    req, _ := http.NewRequest("GET", addressString, nil)
    tr := &http.Transport{
        Proxy: func(req *http.Request) (*url.URL, error) {
            proxyURI, err := url.Parse(proxyString)
            return proxyURI, err
        },
    }

   // The http client is equipped to handle http/2 connections
    hc := &http.Client{Transport: tr}
    resp, _ := hc.Do(req)
    log.Print(resp)
}

如果您希望通過套接字進行通信,則應該可以使用以下方法:

socket := "<socket-path>"
// server
sock, err := net.Listen("unix", socket)
go http.Serve(s, nil)

//client
httpc := http.Client{
    Transport: &http.Transport{
        DialContext: func(_ context.Context, _, _ string) (net.Conn, error) {
            return net.Dial("unix", socket)
        },
    },
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM