栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

golang http请求时设置代理ip

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

golang http请求时设置代理ip

在http.Client中自定义Transport,设置Proxy即可,目前网上存在很多代理ip网站,本人也写过一些代理ip网址的爬取,见 GitHub

// 如果需要代理验证,那么如下进行设置
// 否则直接设置为url.Parse("http://inproxy.sjtu.edu.cn:8000")
uri, err := url.Parse("http://username:password@inproxy.sjtu.edu.cn:8000")

if err != nil{
	log.Fatal("parse url error: ", err)
}
log.Println(uri.User)

client := http.Client{
	Transport: &http.Transport{
		// 设置代理
		Proxy: http.ProxyURL(uri),
	},
}

resp, err := client.Get("http://www.baidu.com")
if err != nil{
	log.Fatal(err)
}
defer resp.Body.Close()
data, _ := ioutil.ReadAll(resp.Body)
log.Println(string(data))

除此之外,你也可以设置环境变量,比如

 HTTP_PROXY, HTTPS_PROXY, NO_PROXY

然后修改上方的代码为

client := http.Client{
	Transport: &http.Transport{
		// 设置代理,从环境变量中获取
		Proxy: http.ProxyFromEnvironment,
	},
}

具体的内容查看文档如下即可

// ProxyFromEnvironment returns the URL of the proxy to use for a
// given request, as indicated by the environment variables
// HTTP_PROXY, HTTPS_PROXY and NO_PROXY (or the lowercase versions
// thereof). HTTPS_PROXY takes precedence over HTTP_PROXY for https
// requests.
//
// The environment values may be either a complete URL or a
// "host[:port]", in which case the "http" scheme is assumed.
// An error is returned if the value is a different form.
//
// A nil URL and nil error are returned if no proxy is defined in the
// environment, or a proxy should not be used for the given request,
// as defined by NO_PROXY.
//
// As a special case, if req.URL.Host is "localhost" (with or without
// a port number), then a nil URL and nil error will be returned.
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/909244.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号