首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用go刮取TLS证书?

如何使用go刮取TLS证书?
EN

Stack Overflow用户
提问于 2022-07-08 22:34:02
回答 1查看 88关注 0票数 2

我正在使用柯利刮一个网站,我也试图获得该网站在TLS握手期间呈现的TLS证书。我查看了文档和响应对象,但没有找到我要找的东西。

根据文档,我可以通过更改默认的HTTP往返器定制一些http选项。我尝试设置自定义的GetCertificate和GetClientCertificate函数,假设这些函数将在TLS握手时使用,但是不会调用print语句。

代码语言:javascript
复制
    // Instantiate default collector
    c := colly.NewCollector(
        // Visit only domains: hackerspaces.org, wiki.hackerspaces.org
        colly.AllowedDomains("pkg.go.dev"),
    )

    c.WithTransport(&http.Transport{
        TLSClientConfig: &tls.Config{
            GetCertificate: func(ch *tls.ClientHelloInfo) (*tls.Certificate, error) {
                fmt.Println("~~~GETCERT CALLED~~")
                return nil, nil
            },
            GetClientCertificate: func(cri *tls.CertificateRequestInfo) (*tls.Certificate, error) {
                fmt.Println("~~~GETCLIENTCERT CALLED~~")
                return nil, nil
            },
        },
    })

请帮我用Colly刮TLS证书。

EN

回答 1

Stack Overflow用户

发布于 2022-07-09 01:11:48

这是一个从原始http.Response获取叶证书的片段,以防您放弃使用Colly获得证书。

代码语言:javascript
复制
tls := ""
if res.TLS != nil && len(res.TLS.PeerCertificates) > 0 {
    cert := res.TLS.PeerCertificates[0]
    tls = base64.StdEncoding.EncodeToString(cert.Raw)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72917618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档