go使用HTTP代理和SOCKS5代理的代码示例

本文档为获取到代理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))
}


            
  • 25
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值