You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.5 KiB
68 lines
1.5 KiB
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) |
|
} |
|
}
|
|
|