mic~ proxy for JA4-TLS fingerprinting evasion |
| git clone https://github.com/djnnvx/mic.git |
| log | files | refs | archive | README | LICENSE |
tls.go (1367B)
1 // Package fingerprint provides implementations for controlling outbound TLS 2 // connection fingerprints. 3 package fingerprint 4 5 import ( 6 "fmt" 7 8 utls "github.com/bogdanfinn/utls" 9 ) 10 11 // NameTable maps profile names to utls ClientHelloID presets. 12 var NameTable = map[string]utls.ClientHelloID{ 13 "chrome-120": utls.HelloChrome_120, 14 "chrome-120-pq": utls.HelloChrome_120_PQ, 15 "chrome-131": utls.HelloChrome_131, 16 "chrome-133": utls.HelloChrome_133, 17 "firefox-120": utls.HelloFirefox_120, 18 "safari-16": utls.HelloSafari_16_0, 19 "ios-16": utls.HelloIOS_16_0, 20 "edge-85": utls.HelloEdge_85, 21 "edge-106": utls.HelloEdge_106, 22 "opera-91": utls.HelloOpera_91, 23 "android-11-okhttp": utls.HelloAndroid_11_OkHttp, 24 "ipad-15": utls.HelloIPad_15_6, 25 "qq-11": utls.HelloQQ_11_1, 26 "360-7": utls.Hello360_7_5, 27 "360-11": utls.Hello360_11_0, 28 } 29 30 type TLSFingerprint struct { 31 name string 32 id utls.ClientHelloID 33 } 34 35 func ByName(name string) (*TLSFingerprint, error) { 36 id, ok := NameTable[name] 37 if !ok { 38 return nil, fmt.Errorf("unknown TLS fingerprint profile %q", name) 39 } 40 return &TLSFingerprint{name: name, id: id}, nil 41 } 42 43 func (f *TLSFingerprint) Name() string { 44 return f.name 45 } 46 47 func (f *TLSFingerprint) ClientHelloID() utls.ClientHelloID { 48 return f.id 49 }