我正在使用柯利刮一个网站,我也试图获得该网站在TLS握手期间呈现的TLS证书。我查看了文档和响应对象,但没有找到我要找的东西。
根据文档,我可以通过更改默认的HTTP往返器定制一些http选项。我尝试设置自定义的GetCertificate和GetClientCertificate函数,假设这些函数将在TLS握手时使用,但是不会调用print语句。
// 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证书。
发布于 2022-07-09 01:11:48
这是一个从原始http.Response获取叶证书的片段,以防您放弃使用Colly获得证书。
tls := ""
if res.TLS != nil && len(res.TLS.PeerCertificates) > 0 {
cert := res.TLS.PeerCertificates[0]
tls = base64.StdEncoding.EncodeToString(cert.Raw)
}https://stackoverflow.com/questions/72917618
复制相似问题