golang net/http访问https

栏目: Go · 发布时间: 7年前

内容简介:进来看了golang写兵法爬虫的资料,于是自己动手简单的尝试了一下,发现在使用运行是报的错误

进来看了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)
}

总结

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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

小圈子·大社交

小圈子·大社交

Paul Adams / 王志慧 / 人民邮电出版社 / 2013-1 / 29.00元

网络正在脱离以内容为核心构建的方式,转向以人为核心重新构建。这样深远的变革将影响我们制定商业策略、设计以及营销和广告的方式。 本书作者先后在谷歌和Facebook供职,对于社交网络有深入的研究和丰富的实战经验。他以学术界和工业界最新的调查研究为基础,阐述了人们如何通过社交圈子相互联系的规律,探讨了理念和品牌信息如何通过社交网络传播开来的过程。书中介绍了许多实际的例子,通过这些鲜活的实例,你将......一起来看看 《小圈子·大社交》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具