Golang Go语言中有没有同时支持 HTTP2、TLS、JA3 指纹的 HTTP 客户端?

发布于 1周前 作者 sinazl 来自 Go语言

Golang Go语言中有没有同时支持 HTTP2、TLS、JA3 指纹的 HTTP 客户端?

目前,https://github.com/CUCyber/ja3transport 可以解决 TLS 、JA3 指纹,但是它不支持 HTTP2

net/http 支持 HTTP2,但是配置 JA3 很麻烦。

6 回复

看了一下 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客户端。以下是对这三个特性的简要说明:

  1. HTTP/2支持:Go语言的net/http包原生支持HTTP/2。在创建HTTP客户端或服务器时,只需确保配置正确,即可自动使用HTTP/2进行通信。
  2. TLS支持:Go语言的crypto/tls包提供了强大的TLS功能。通过配置http.Client的Transport字段中的TLSClientConfig,可以定制TLS行为,包括证书验证、加密套件选择等。
  3. JA3指纹识别:虽然Go语言标准库没有直接提供JA3指纹生成的函数,但可以通过crypto/tls包模拟TLS握手过程,捕获并处理握手信息,从而生成JA3指纹。这通常涉及对TLS配置的分析和握手过程中参数的提取。

综上所述,通过结合使用net/http、crypto/tls包以及自定义的JA3指纹生成逻辑,Go语言完全有能力构建出同时支持HTTP/2、TLS和JA3指纹识别的HTTP客户端。这样的客户端在网络通信、安全监测等领域具有广泛的应用价值。

回到顶部