码迷,mamicode.com
首页 > 其他好文 > 详细

Go——标准库使用代理

时间:2020-02-13 23:13:06      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:UNC   异常   tproxy   lan   版本   dem   状态码   代理服务   url   

环境配置

确认环境都安装好了,看看go的版本。

go version

技术图片

代码样例

使用代理,发送GET请求

package main

import (
    "compress/gzip"
    "fmt"
    "io"
    "io/ioutil"
    "net/http"
    "net/url"
    "os"
)

func main() {
    // 用户名密码(私密代理/独享代理)

    // 代理服务器
    proxy_raw := "47.115.5.19:16816"
    proxy_str := fmt.Sprintf("http://%s:%s@%s", proxy_raw)
    proxy, err := url.Parse(proxy_str)

    // 目标网页
    page_url := "http://dev.kdlapi.com/testproxy"

    //  请求目标网页
    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))
    }
}

运行下,看看结果

go run demo.go

没问题,200 OK的
技术图片

POST请求

把上面代码中的get,改成post就好了。就是这一句

req, _ := http.NewRequest("POST", page_url, nil)

进阶学习

Go——标准库使用代理

标签:UNC   异常   tproxy   lan   版本   dem   状态码   代理服务   url   

原文地址:https://www.cnblogs.com/kuaidaili/p/12305465.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!