代码拉取完成,页面将自动刷新
upstreamproxy
PackageThis provides upstream proxy support by extending golang.org/x/net/proxy package.
Currently supported protocols:
socks4a
URI schemesocks5
URI schemehttp
URI schemeNote: NewProxyDialFunc
returns ForwardDialFunc
if ProxyURIString
is empty
/*
Proxy URI examples:
"http://proxyhost:8080"
"socks5://user:password@proxyhost:1080"
"http://NTDOMAIN\NTUser:password@proxyhost:3375"
*/
//Plain HTTP transport via HTTP proxy
func doAuthenticatedHTTP() {
proxyUrl, err := url.Parse("http://user:password@172.16.1.1:8080")
transport := &http.Transport{Proxy: http.ProxyURL(proxyUrl)}
customHeader := http.Header{"Test" :{"test"}}
authHttpTransport, err := upstreamproxy.NewProxyAuthTransport(transport, customHeader)
if err != nil {
fmt.Println("Error: ", err)
return
}
r, err := http.NewRequest("GET", "http://www.reddit.com", bytes.NewReader(data))
if err != nil {
fmt.Println("Error: ", err)
return
}
resp, err := authHttpTransport.RoundTrip(r)
if err != nil {
fmt.Println("RoundTrip Error: ", err)
return
}
ioutil.ReadAll(resp.Body)
fmt.Println(string(resp.Status))
}
//HTTPS transport via HTTP proxy
func doAuthenticatedHTTPS() {
dialTlsFn := func(netw, addr string) (net.Conn, error) {
config := &upstreamproxy.UpstreamProxyConfig{
ForwardDialFunc: net.Dial,
ProxyURIString: "http://user:password@172.16.1.1:8080",
}
proxyDialFunc := upstreamproxy.NewProxyDialFunc(config)
conn, err := proxyDialFunc(netw, addr)
if err != nil {
return nil, err
}
tlsconfig := &tls.Config{InsecureSkipVerify: false}
tlsConn := tls.Client(conn, tlsconfig)
return tlsConn, tlsConn.Handshake()
}
r, err := http.NewRequest("GET", "https://www.reddit.com", bytes.NewReader(data))
transport = &http.Transport{DialTLS: dialTlsFn}
resp, err := transport.RoundTrip(r)
if err != nil {
log.Println("RoundTrip Error: ", err)
return
}
ioutil.ReadAll(resp.Body)
fmt.Println(string(resp.Status))
}
//HTTP transport via SOCKS5 proxy
func doAuthenticatedHttpSocks() {
dialFn := func(netw, addr string) (net.Conn, error) {
config := &upstreamproxy.UpstreamProxyConfig{
ForwardDialFunc: net.Dial,
ProxyURIString: "socks5://user:password@172.16.1.1:5555",
}
proxyDialFunc := upstreamproxy.NewProxyDialFunc(config)
return proxyDialFunc(netw, addr)
}
r, err := http.NewRequest("GET", "https://www.reddit.com", bytes.NewReader(data))
transport = &http.Transport{Dial: dialFn}
resp, err := transport.RoundTrip(r)
if err != nil {
log.Println("RoundTrip Error: ", err)
return
}
ioutil.ReadAll(resp.Body)
fmt.Println(string(resp.Status))
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。