分享
  1. 首页
  2. 文章

golang net/http访问https

sixgo · · 11774 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

进来看了golang写兵法爬虫的资料,于是自己动手简单的尝试了一下,发现在使用http.Get("https://...")的时候,会报错。原因是我的环境设置了上网代理。上网搜索了一些问题,耗时两天才最终解决,现将解决过程记录下来,仅供参考。

最初的源码

package main
import (
 "fmt"
 "net/http"
)
func main() {
 seedUrl := "https://www.douban.com/"
 body, err := http.Get(seedUrl)
 if err != nil {
 fmt.Errorf("get https://www.douban.com/ error")
 panic(err)
 }
 fmt.Printf("%s\n", body)
}
运行是报的错误panic: Get https://www.douban.com/: proxyconnect tcp: tls: first record does not look like a TLS handshake
  • 第一次搜索,给出的提示是没有TLS添加证书,需要修改源码,修改后的源码
  • 运行时进入无限等待,没有探究为什么。继续搜索也没有解决。
package main
import (
 "crypto/tls"
 "fmt"
 "net/http"
)
func main() {
 tr := &http.Transport{
 TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
 }
 client := &http.Client{Transport: tr}
 seedUrl := "https://www.douban.com/"
 body, err := client.Get(seedUrl)
 if err != nil {
 fmt.Errorf("get https://www.douban.com/ error")
 panic(err)
 }
 fmt.Printf("%s\n", body)
}
  • 第二天,换一种思路,因为我的机器上网设置了代理,所以就检索如何用golang设置http代理。修改代码如下,可正常工作。
package main
import (
 "crypto/tls"
 "fmt"
 "io/ioutil"
 "net/http"
 "net/url"
)
func main() {
 proxy := func(_ *http.Request) (*url.URL, error) {
 return url.Parse("http://你的代理:80")
 }
 tr := &http.Transport{
 TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
 Proxy: proxy,
 }
 client := &http.Client{Transport: tr}
 seedUrl := "https://www.douban.com/"
 resp, err := client.Get(seedUrl)
 if err != nil {
 fmt.Errorf("get https://www.douban.com/ error")
 panic(err)
 }
 defer resp.Body.Close()
 body, _ := ioutil.ReadAll(resp.Body)
 fmt.Printf("%s\n", body)
}

总结

  • 首先分析运行的环境是什么样的,比如我的设置了上网代理
  • 错误搜索解决不了问题时,进行环境相关的关键词搜索

有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:sixgo

查看原文:golang net/http访问https

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
11774 次点击 ∙ 1 赞
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏