go使用HTTP代理和SOCKS5代理的代码示例
2024-03-18 本文已影响0人
小石头IP客服
本文档为获取到代理IP后使用代理的代码样例,供开发者参考。
代码样例直接运行无法得到正确的结果,因为代码中的代理地址/端口和应用账号密码等信息都是虚构的,您替换成自己真实的就可以正常运行了。
如何获取代理地址/端口和设置代理授权?
请参考:接入指南 - 快速入门
使用前提:
1、 已经获取代理地址,去获取:www.xiaoshitouip.com。
2、 已经设置代理授权(用户名/密码或者IP白名单)。
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"net/url"
"time"
)
func main() {
# 从 https://www.xiaoshitouip.com/ 领取后,替换自己的ip+端口
# 到管理后台:https://admin.xiaoshitouip.com/proxy/proxy-auth 授权管理页面添加账号密码或者ip白名单
# 设置了ip白名单就不需要设置账号密码了
proxyAddr := "http://代理服务器ip:代理服务器http端口/"
//账号密码验证
//proxyAddr := "http://用户名:密码@代理服务器ip:代理服务器http端口/"
//proxyAddr := "socks5://代理服务器ip:代理服务器http端口/"
//proxyAddr := "socks5://用户名:密码@代理服务器ip:代理服务器http端口/"
httpUrl := "http://myip.ipip.net"
proxy, err := url.Parse(proxyAddr)
if err != nil {
log.Fatal(err)
}
netTransport := &http.Transport{
Proxy:http.ProxyURL(proxy),
MaxIdleConnsPerHost: 10,
ResponseHeaderTimeout: time.Second * time.Duration(5),
}
httpClient := &http.Client{
Timeout: time.Second * 10,
Transport: netTransport,
}
res, err := httpClient.Get(httpUrl)
if err != nil {
log.Println(err)
return
}
defer res.Body.Close()
if res.StatusCode != http.StatusOK {
log.Println(err)
return
}
c, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(c))
}