Golang Go语言中有没有同时支持 HTTP2、TLS、JA3 指纹的 HTTP 客户端?
Golang Go语言中有没有同时支持 HTTP2、TLS、JA3 指纹的 HTTP 客户端?
目前,https://github.com/CUCyber/ja3transport 可以解决 TLS 、JA3 指纹,但是它不支持 HTTP2
net/http 支持 HTTP2,但是配置 JA3 很麻烦。
看了一下 ja3transport 的设计挺标准的啊,你用标准库把 transport 换成 ja3transport 的不就好了,它自己的 JA3Client 也是这么干的啊
更多关于Golang Go语言中有没有同时支持 HTTP2、TLS、JA3 指纹的 HTTP 客户端?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
我已经试过了。导致它不支持 http2 的原因就是 ja3transport. 即使直接使用 net/http,只要换上了它的 ja3transport,立马就失去访问 http2 的能力了。
原因是 ja3transport 在 Transport 里面设置的 Dial,导致 net/http 发现这个字段被设置了,自动强制使用 http1.1
#2 确实,有没有试过 ForceAttemptHTTP2 这个配置
没有。这个配置写到哪里
#4 Transport,在 NewTransport 之后对返回的 transport 修改一下就行
在Golang(Go语言)中,确实可以构建同时支持HTTP/2、TLS以及JA3指纹识别的HTTP客户端。以下是对这三个特性的简要说明:
- HTTP/2支持:Go语言的net/http包原生支持HTTP/2。在创建HTTP客户端或服务器时,只需确保配置正确,即可自动使用HTTP/2进行通信。
- TLS支持:Go语言的crypto/tls包提供了强大的TLS功能。通过配置http.Client的Transport字段中的TLSClientConfig,可以定制TLS行为,包括证书验证、加密套件选择等。
- JA3指纹识别:虽然Go语言标准库没有直接提供JA3指纹生成的函数,但可以通过crypto/tls包模拟TLS握手过程,捕获并处理握手信息,从而生成JA3指纹。这通常涉及对TLS配置的分析和握手过程中参数的提取。
综上所述,通过结合使用net/http、crypto/tls包以及自定义的JA3指纹生成逻辑,Go语言完全有能力构建出同时支持HTTP/2、TLS和JA3指纹识别的HTTP客户端。这样的客户端在网络通信、安全监测等领域具有广泛的应用价值。