commit c1b2b0f0fc1065f194156886b7b9378d76022d60 Author: jyhl Date: Tue May 19 16:35:39 2020 +0800 init diff --git a/README.md b/README.md new file mode 100644 index 0000000..a7e5a45 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +## 运行 +``` + go run main.go +``` diff --git a/main.go b/main.go new file mode 100644 index 0000000..2abb09c --- /dev/null +++ b/main.go @@ -0,0 +1,68 @@ +package main + +import ( + "net/url" + "net/http" + "bytes" + "fmt" + "io/ioutil" +) + +// 代理服务器(产品官网 www.16yun.cn) +const ProxyServer = "t.16yun.cn:31111" + +type ProxyAuth struct { + Username string + Password string +} + +func (p ProxyAuth) ProxyClient() http.Client { + + var proxyURL *url.URL + if p.Username != ""&& p.Password!="" { + proxyURL, _ = url.Parse("http://" + p.Username + ":" + p.Password + "@" + ProxyServer) + }else{ + proxyURL, _ = url.Parse("http://" + ProxyServer) + } + return http.Client{Transport: &http.Transport{Proxy:http.ProxyURL(proxyURL)}} +} + +func main() { + + //服务器域名:u4866.b5.t.16yun.cn + //服务端口:6460 + //用户名:16JCNPZD + //密码:238369 + + targetURI := "https://httpbin.org/ip" + + + // 初始化 proxy http client + client := ProxyAuth{"USERNAME", "PASSWORD"}.ProxyClient() + + request, _ := http.NewRequest("GET", targetURI, bytes.NewBuffer([] byte(``))) + + // 设置Proxy-Tunnel + // rand.Seed(time.Now().UnixNano()) + // tunnel := rand.Intn(10000) + // request.Header.Set("Proxy-Tunnel", strconv.Itoa(tunnel) ) + + response, err := client.Do(request) + + if err != nil { + panic("failed to connect: " + err.Error()) + } else { + bodyByte, err := ioutil.ReadAll(response.Body) + if err != nil { + fmt.Println("读取 Body 时出错", err) + return + } + response.Body.Close() + + body := string(bodyByte) + + fmt.Println("Response Status:", response.Status) + fmt.Println("Response Header:", response.Header) + fmt.Println("Response Body:\n", body) + } +}