目录

第一种方法: HTTP(S)代理

第二种方法: Socket5代理


第一种方法: HTTP(S)代理

代码实现如下:

package mainimport ("fmt""io/ioutil""log""net/http""net/url"
)func main() {urli := url.URL{}urlproxy, _ := urli.Parse("https://127.0.0.1:9743")c := http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(urlproxy),},}if resp, err := c.Get("https://www.google.com"); err != nil {log.Fatalln(err)} else {defer resp.Body.Close()body, _ := ioutil.ReadAll(resp.Body)fmt.Printf("%s\n", body)}
}

上面这种方法是通过在建立http.Client对象时指定代理地址,其实除了这么一种方式外,还有一种就是通过环境变量来指定代理。代码如下

package mainimport ("fmt""io/ioutil""log""net/http""os"
)func main() {// urli := url.URL{}// urlproxy, _ := urli.Parse("https://127.0.0.1:9743")os.Setenv("HTTP_PROXY", "http://127.0.0.1:9743")os.Setenv("HTTPS_PROXY", "https://127.0.0.1:9743")c := http.Client{// Transport: &http.Transport{//    Proxy: http.ProxyURL(urlproxy),// },}if resp, err := c.Get("https://www.google.com"); err != nil {log.Fatalln(err)} else {defer resp.Body.Close()body, _ := ioutil.ReadAll(resp.Body)fmt.Printf("%s\n", body)}
}

这个方法是通过设置环境变量,go会自动配置代理。

第二种方法: Socket5代理

package mainimport ("fmt""io/ioutil""log""net/http""os""golang.org/x/net/proxy"
)func main() {// create a socks5 dialerdialer, err := proxy.SOCKS5("tcp", "127.0.0.1:9742", nil, proxy.Direct)if err != nil {fmt.Fprintln(os.Stderr, "can't connect to the proxy:", err)os.Exit(1)}// setup a http clienthttpTransport := &http.Transport{}httpClient := &http.Client{Transport: httpTransport}// set our socks5 as the dialerhttpTransport.Dial = dialer.Dialif resp, err := httpClient.Get("https://www.google.com"); err != nil {log.Fatalln(err)} else {defer resp.Body.Close()body, _ := ioutil.ReadAll(resp.Body)fmt.Printf("%s\n", body)}
}

golang 使用 http socks5 代理相关推荐

  1. 猜谜游戏、彩云词典爬虫、SOCKS5代理的 Go(Golang) 小实践,附带全代码解释

    猜谜游戏在编程语言实践都已经和 HelloWord 程序成为必不可少的新手实践环节,毕竟,它能够让我们基本熟悉 for 循环.变量定义.打印.if else 语句等等的使用,当我们基本熟悉该语言基础之 ...

  2. golang 通过socks5代理连接mysql(gorm)

    前言 在前一段时间遇见过这样一件事,我们的部分服务要部署在两个机房,而且两个机房并不互通,但是两个服务要通过mysql数据库实现配合工作,从无到有想到了两种实现方式. 这里注明一点的是mysql是与主 ...

  3. 实战:150行Go实现高性能socks5代理

    光说不练假把式,不如上手试试,这篇来写个有点卵用的东西. - TCP Server - 用 Go 实现一个 TCP Server 实在是太简单了,什么 c10k problem.select.poll ...

  4. 红蓝对抗之隧道技术第二篇(reGeorg内网穿透、SSH隧道本地Socks代理、SSH远程转发、Earthworm Socks5代理、Tunna正向代理、ICMP隧道、DNS隧道、Frp穿透)

    文章目录 隧道应用 reGeorg内网穿透 SSH本地转发(正向) 场景一 场景二 SSH远程转发(反向) Earthworm Socks5代理 正向代理 反向代理 Tunna正向代理 ICMP隧道 ...

  5. 穿透Socks5 代理的UDP编程

    网络编程中,对于数据传输实时性要求较高的场合,大家都会选择UDP来作为数据传输协议,在TCP/IP协议族中UDP协议较TCP协议需要的网络系统资源更少.然而在企业应用中,由于网络安全原因等会导致除了特 ...

  6. #架构#重新设计socks5代理代码框架

    之前写过socks5代理,具体请看这篇文章. 在写任何代码代码之前,一直认为只有设计好了相应的数据结构,才能写好好的算法和框架.从前面的代码来看,对socks5协议的数据结构定义还算不错,具有很好的可 ...

  7. Golang 实现tcp转发代理

    Golang 实现tcp转发代理 源码示例 package mainimport ("flag""fmt""io""net&quo ...

  8. Socks代理是什么?PC端怎么使用Socks5代理?

    之前给大家介绍过代理IP是什么以及它的作用.代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息,形象的说:它是网络信息的中转站.最常用的代理莫过于HTTP代理与Sock ...

  9. socks5代理IP的几种测试工具

    socks5代理IP和HTTP代理存在着一定的区别,它们的使用网络协议存在区别,在使用方式上也存在区别,HTTP代理IP可以通过浏览器设置代理进行测试,而socks5代理IP却不能直接通过浏览器设置代 ...

最新文章

  1. travis-ci如何配置android
  2. 宽度优先遍历(BFS)
  3. vim tail head 截取文件 导入
  4. HihoCoder - 1441 后缀自动机一·基本概念(模拟,后缀自动机入门好题)
  5. WordPress 自定义插件初始化及卸载
  6. read/fread write/fwrite 的区别
  7. Rem布局的原理解析
  8. linux yum安装redis5.0,CentOS 7安装Redis 5.0.5并加入Systemd服务
  9. php动态创建属性,PHP使用方法重载实现动态创建属性的get和set方法
  10. context-param标签含义及与init-param标签的异同(转)
  11. [译] 实例解析 ES6 Proxy 使用场景
  12. 常见公文写作规范,公文写作常见错误更正对照表!
  13. 女程序员:秃头的富婆不好当
  14. 什么是存储过程?用什么来调用?
  15. 《数据库原理与应用》复习总结
  16. c语言求字符ascii,C语言中ASCII码是什么意思? c语言怎么求字符的ascii码
  17. Struts的vistor校验器
  18. 兔子数列 - C语言
  19. snowboy进行语音唤醒,编译snowboy文件
  20. 85后湖南伢子专注五子棋推广 在传承中增强文化自信

热门文章

  1. Kubernetes — PV、PVC
  2. C 语言编程 — GDB 调试工具
  3. VMware 虚拟化编程(11) — VMware 虚拟机的全量备份与增量备份方案
  4. 用 Flask 来写个轻博客 (8) — (M)VC_Alembic 管理数据库结构的升级和降级
  5. Openstack组件部署 — keystone(domain, projects, users, and roles)
  6. linux开机自动执行命令或自动启动程序(rc.local)
  7. 如何在Cordova Android 7.0.0 以下版本集成最新插件 极光插件为例
  8. 验证码在服务器不显示
  9. 网页打不开,却能上qq,何解?
  10. Java Swing 之Timer配合JProgressBar的使用