diff --git a/profiles/contributed_browser_profiles.go b/profiles/contributed_browser_profiles.go index 30fa8dd..56c03ad 100644 --- a/profiles/contributed_browser_profiles.go +++ b/profiles/contributed_browser_profiles.go @@ -1 +1,144 @@ package profiles + +import ( + "github.com/bogdanfinn/fhttp/http2" + tls "github.com/bogdanfinn/utls" +) + +var Firefox_120 = ClientProfile{ + clientHelloId: tls.ClientHelloID{ + Client: "Firefox", + RandomExtensionOrder: false, + Version: "120", + Seed: nil, + SpecFactory: func() (tls.ClientHelloSpec, error) { + return tls.ClientHelloSpec{ + CipherSuites: []uint16{ + tls.TLS_AES_128_GCM_SHA256, + tls.TLS_CHACHA20_POLY1305_SHA256, + tls.TLS_AES_256_GCM_SHA384, + tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, + tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, + tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, + tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, + tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, + tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, + tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, + tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, + tls.TLS_RSA_WITH_AES_128_GCM_SHA256, + tls.TLS_RSA_WITH_AES_256_GCM_SHA384, + tls.TLS_RSA_WITH_AES_128_CBC_SHA, + tls.TLS_RSA_WITH_AES_256_CBC_SHA, + }, + CompressionMethods: []byte{ + tls.CompressionNone, + }, + Extensions: []tls.TLSExtension{ + &tls.SNIExtension{}, + &tls.ExtendedMasterSecretExtension{}, + &tls.RenegotiationInfoExtension{Renegotiation: tls.RenegotiateOnceAsClient}, + &tls.SupportedCurvesExtension{[]tls.CurveID{ + tls.X25519, + tls.CurveP256, + tls.CurveP384, + tls.CurveP521, + tls.FAKEFFDHE2048, + tls.FAKEFFDHE3072, + }}, + &tls.SupportedPointsExtension{SupportedPoints: []byte{ + tls.PointFormatUncompressed, + }}, + + &tls.ALPNExtension{AlpnProtocols: []string{"h2", "http/1.1"}}, + &tls.StatusRequestExtension{}, + &tls.DelegatedCredentialsExtension{ + SupportedSignatureAlgorithms: []tls.SignatureScheme{ + tls.ECDSAWithP256AndSHA256, + tls.ECDSAWithP384AndSHA384, + tls.ECDSAWithP521AndSHA512, + tls.ECDSAWithSHA1, + }, + }, + &tls.KeyShareExtension{[]tls.KeyShare{ + {Group: tls.X25519}, + {Group: tls.CurveP256}, + }}, + &tls.SupportedVersionsExtension{[]uint16{ + tls.VersionTLS13, + tls.VersionTLS12, + }}, + &tls.SignatureAlgorithmsExtension{SupportedSignatureAlgorithms: []tls.SignatureScheme{ + tls.ECDSAWithP256AndSHA256, + tls.ECDSAWithP384AndSHA384, + tls.ECDSAWithP521AndSHA512, + tls.PSSWithSHA256, + tls.PSSWithSHA384, + tls.PSSWithSHA512, + tls.PKCS1WithSHA256, + tls.PKCS1WithSHA384, + tls.PKCS1WithSHA512, + tls.ECDSAWithSHA1, + tls.PKCS1WithSHA1, + }}, + &tls.FakeRecordSizeLimitExtension{0x4001}, + tls.BoringGREASEECH(), + }}, nil + }, + }, + settings: map[http2.SettingID]uint32{ + http2.SettingHeaderTableSize: 65536, + http2.SettingInitialWindowSize: 131072, + http2.SettingMaxFrameSize: 16384, + }, + settingsOrder: []http2.SettingID{ + http2.SettingHeaderTableSize, + http2.SettingInitialWindowSize, + http2.SettingMaxFrameSize, + }, + pseudoHeaderOrder: []string{ + ":method", + ":path", + ":authority", + ":scheme", + }, + connectionFlow: 12517377, + headerPriority: &http2.PriorityParam{ + StreamDep: 13, + Exclusive: false, + Weight: 41, + }, + priorities: []http2.Priority{ + {StreamID: 3, PriorityParam: http2.PriorityParam{ + StreamDep: 0, + Exclusive: false, + Weight: 200, + }}, + {StreamID: 5, PriorityParam: http2.PriorityParam{ + StreamDep: 0, + Exclusive: false, + Weight: 100, + }}, + {StreamID: 7, PriorityParam: http2.PriorityParam{ + StreamDep: 0, + Exclusive: false, + Weight: 0, + }}, + {StreamID: 9, PriorityParam: http2.PriorityParam{ + StreamDep: 7, + Exclusive: false, + Weight: 0, + }}, + {StreamID: 11, PriorityParam: http2.PriorityParam{ + StreamDep: 3, + Exclusive: false, + Weight: 0, + }}, + {StreamID: 13, PriorityParam: http2.PriorityParam{ + StreamDep: 0, + Exclusive: false, + Weight: 240, + }}, + }, +} diff --git a/profiles/profiles.go b/profiles/profiles.go index c44705e..21e715a 100644 --- a/profiles/profiles.go +++ b/profiles/profiles.go @@ -35,6 +35,7 @@ var MappedTLSClients = map[string]ClientProfile{ "firefox_108": Firefox_108, "firefox_110": Firefox_110, "firefox_117": Firefox_117, + "firefox_120": Firefox_120, "opera_89": Opera_89, "opera_90": Opera_90, "opera_91": Opera_91,