This commit is contained in:
wenyifan
2022-10-14 15:49:19 +08:00
parent a6bf1c0e7d
commit 91ac6f7e17
5 changed files with 77 additions and 6 deletions

View File

@ -5,7 +5,10 @@ import (
"crypto/md5"
"crypto/tls"
"fmt"
utls "github.com/refraction-networking/utls"
"io/ioutil"
"net"
"net/http"
"testing"
"time"
)
@ -64,3 +67,49 @@ func TestAes(t *testing.T) {
fmt.Println(string(d))
}
func TestTLSFingerprint(t *testing.T) {
transport := http.Transport{
DialTLS: func(network, adr string) (net.Conn, error) {
dial, err := net.Dial(network, adr)
if err != nil {
return nil, err
}
return wrapTLSClient(dial, time.Second*5)
},
}
client := http.Client{
Transport: &transport,
CheckRedirect: nil,
Jar: nil,
Timeout: 0,
}
get, err := client.Get("https://client.tlsfingerprint.io:8443/")
if err != nil {
return
}
all, err := ioutil.ReadAll(get.Body)
if err != nil {
return
}
fmt.Println(string(all))
}
func wrapTLSClient(conn net.Conn, timeout time.Duration) (net.Conn, error) {
var err error
conn.SetDeadline(time.Now().Add(timeout))
defer conn.SetDeadline(time.Time{})
tlsConn := utls.UClient(conn, &utls.Config{ServerName: "client.tlsfingerprint.io"}, utls.HelloChrome_102)
if err = tlsConn.Handshake(); err != nil {
fmt.Println(err.Error())
tlsConn.Close()
return nil, err
}
return tlsConn, err
}