[英]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.