温馨提示:
1. http和https网页均可适用
2. 代理样例的代理IP均为虚构,请通过ipip9的API提取链接获取代理IP后添加使用
3. "用户名+密码"授权时,"用户名"为实例id,"密码"则是实例id后面的八位数密码
参考样例
package main import ( "compress/gzip" "fmt" "io" "io/ioutil" "net/http" "net/url" "os" ) func main() { // 用户名+密码授权 username := "username" password := "password" // 代理服务器 proxy_raw := "168.168.168.168:25875" proxy_str := fmt.Sprintf("http://%s:%s@%s", username, password, proxy_raw) proxy, err := url.Parse(proxy_str) // 目标网页 page_url := "https://example.com" // 请求目标网页 client := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxy)}} req, _ := http.NewRequest("GET", page_url, nil) req.Header.Add("Accept-Encoding", "gzip") //使用gzip压缩传输数据让访问更快 res, err := client.Do(req) if err != nil { // 请求发生异常 fmt.Println(err.Error()) } else { defer res.Body.Close() //保证最后关闭Body fmt.Println("status code:", res.StatusCode) // 获取状态码 // 有gzip压缩时,需要解压缩读取返回内容 if res.Header.Get("Content-Encoding") == "gzip" { reader, _ := gzip.NewReader(res.Body) // gzip解压缩 defer reader.Close() io.Copy(os.Stdout, reader) os.Exit(0) // 正常退出 } // 无gzip压缩, 读取返回内容 body, _ := ioutil.ReadAll(res.Body) fmt.Println(string(body)) } }