注册
登录
 文档中心 产品介绍 开发指南 API接口 代码样例 使用帮助
GoLang使用标准库调用Http代理IP的代码样例
站大爷 官方 2024-01-20 1570 浏览

温馨提示:

1.  http和https网页均可适用

2.  代理样例的代理IP均为虚构,请通过站大爷的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))
	}
}


立即注册站大爷用户,免费试用全部产品
立即注册站大爷用户,免费试用全部产品