67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"context"
|
|
"crypto/tls"
|
|
"log"
|
|
"net/http"
|
|
"net/http/httputil"
|
|
"net/url"
|
|
|
|
"github.com/ginuerzh/gost/gost"
|
|
)
|
|
|
|
func init() {
|
|
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
|
gost.Debug = true
|
|
}
|
|
|
|
func main() {
|
|
chain := gost.NewChain(
|
|
gost.Node{
|
|
Addr: "127.0.0.1:1080",
|
|
Client: gost.NewClient(
|
|
gost.HTTPConnector(url.UserPassword("admin", "123456")),
|
|
gost.TCPTransporter(),
|
|
),
|
|
},
|
|
gost.Node{
|
|
Addr: "172.24.222.54:8338",
|
|
Client: gost.NewClient(
|
|
gost.ShadowConnector(url.UserPassword("chacha20", "123456")),
|
|
gost.TCPTransporter(),
|
|
),
|
|
},
|
|
gost.Node{
|
|
Addr: "172.24.222.54:8080",
|
|
Client: gost.NewClient(
|
|
gost.SOCKS5Connector(url.UserPassword("cmdsh", "cmdsh123456")),
|
|
gost.TCPTransporter(),
|
|
),
|
|
},
|
|
)
|
|
conn, err := chain.Dial(context.Background(), "baidu.com:443")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
conn = tls.Client(conn, &tls.Config{InsecureSkipVerify: true})
|
|
req, err := http.NewRequest(http.MethodGet, "https://www.baidu.com", nil)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
if err := req.Write(conn); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
resp, err := http.ReadResponse(bufio.NewReader(conn), req)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
rb, _ := httputil.DumpRequest(req, true)
|
|
log.Println(string(rb))
|
|
rb, _ = httputil.DumpResponse(resp, true)
|
|
log.Println(string(rb))
|
|
}
|