温馨提示:
1. http/https网页均可适用
2. 需先安装官方net包: go get golang.org/x/net'
3. 代理样例的代理IP均为虚构,请通过ipip9的API提取链接获取代理IP后添加使用
参考样例
package main import ( "compress/gzip" "fmt" "golang.org/x/net/proxy" "io" "io/ioutil" "net/http" "os" ) func main() { // 用户名+密码授权 username := "username" password := "password" auth := proxy.Auth{ User: username, Password: password, } proxy_str := "168.168.168.168:25878" // 目标网页 page_url := "https://example.com" // 设置代理 dialer, err := proxy.SOCKS5("tcp", proxy_str, &auth, proxy.Direct) if err != nil { fmt.Println(err.Error()) os.Exit(1) } // 请求目标网页 client := &http.Client{Transport: &http.Transport{Dial: dialer.Dial}} 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)) } }