Documentation
¶
Index ¶
- Constants
- Variables
- type ClientProfile
- func (c ClientProfile) GetAllowHTTP() bool
- func (c ClientProfile) GetClientHelloId() tls.ClientHelloID
- func (c ClientProfile) GetClientHelloSpec() (tls.ClientHelloSpec, error)
- func (c ClientProfile) GetClientHelloStr() string
- func (c ClientProfile) GetConnectionFlow() uint32
- func (c ClientProfile) GetHeaderPriority() *http2.PriorityParam
- func (c ClientProfile) GetHttp3PriorityParam() uint32
- func (c ClientProfile) GetHttp3PseudoHeaderOrder() []string
- func (c ClientProfile) GetHttp3SendGreaseFrames() bool
- func (c ClientProfile) GetHttp3Settings() map[uint64]uint64
- func (c ClientProfile) GetHttp3SettingsOrder() []uint64
- func (c ClientProfile) GetPriorities() []http2.Priority
- func (c ClientProfile) GetPseudoHeaderOrder() []string
- func (c ClientProfile) GetSettings() map[http2.SettingID]uint32
- func (c ClientProfile) GetSettingsOrder() []http2.SettingID
- func (c ClientProfile) GetStreamID() uint32
- func (c ClientProfile) GetWebSocketCompressionMode() int
- func (c ClientProfile) GetWebSocketExtensions() string
- func (c ClientProfile) GetWebSocketHeaderOrder() []string
- func (c ClientProfile) GetWebTransportApplicationProtocols() []string
- func (c ClientProfile) WithWebSocketCompressionMode(mode int) ClientProfile
- func (c ClientProfile) WithWebSocketExtensions(extensions string) ClientProfile
- func (c ClientProfile) WithWebSocketHeaderOrder(order []string) ClientProfile
- func (c ClientProfile) WithWebTransportApplicationProtocols(protocols []string) ClientProfile
Constants ¶
const ( WebSocketCompressionDisabled = iota WebSocketCompressionNoContextTakeover WebSocketCompressionContextTakeover )
WebSocket compression modes used by ClientProfile. They map 1:1 onto the compression modes of the in-tree websocket implementation and let a profile control the permessage-deflate behavior of a browser's WebSocket connection.
Variables ¶
var Brave_146 = ClientProfile{ // contains filtered or unexported fields }
Brave_146 is a TLS client profile for Brave Browser v146 (Chromium 146 based). Captured from tls.peet.ws/api/all on 2026-03-27 (5 samples verified). NOTE: Brave randomizes TLS extension order on every connection (anti-fingerprinting). JA3 hash: varies per connection (extension order changes) JA4: t13d1516h2_8daaf6152771_d8a2da3f94cd (consistent - JA4 sorts extensions) Peetprint hash: 1d4ffe9b0e34acac0bd883fa7f79d7b5 (consistent)
var Brave_146_PSK = ClientProfile{ // contains filtered or unexported fields }
Brave_146_PSK is a TLS client profile for Brave Browser v146 with PSK (Pre-Shared Key) for subsequent TLS 1.3 connections where session resumption is available. Extension order is randomized like the non-PSK variant.
var Chrome_103 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_104 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_105 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_106 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_107 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_108 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_109 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_110 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_111 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_112 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_116_PSK = ClientProfile{ // contains filtered or unexported fields }
var Chrome_116_PSK_PQ = ClientProfile{ // contains filtered or unexported fields }
var Chrome_117 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_120 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_124 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_130_PSK = ClientProfile{ // contains filtered or unexported fields }
var Chrome_131 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_131_PSK = ClientProfile{ // contains filtered or unexported fields }
var Chrome_133 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_133_PSK = ClientProfile{ // contains filtered or unexported fields }
var Chrome_144 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_144_PSK = ClientProfile{ // contains filtered or unexported fields }
var Chrome_146 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_146_PSK = ClientProfile{ // contains filtered or unexported fields }
var Chrome_150 = ClientProfile{ // contains filtered or unexported fields }
var Chrome_150_PSK = ClientProfile{ // contains filtered or unexported fields }
var CloudflareCustom = ClientProfile{ // contains filtered or unexported fields }
var ConfirmedAndroid = ClientProfile{ // contains filtered or unexported fields }
var ConfirmedAndroid2 = ClientProfile{ // contains filtered or unexported fields }
var ConfirmedIos = ClientProfile{ // contains filtered or unexported fields }
var DefaultClientProfile = Chrome_150
var Firefox_102 = ClientProfile{ // contains filtered or unexported fields }
var Firefox_104 = ClientProfile{ // contains filtered or unexported fields }
var Firefox_105 = ClientProfile{ // contains filtered or unexported fields }
var Firefox_106 = ClientProfile{ // contains filtered or unexported fields }
var Firefox_108 = ClientProfile{ // contains filtered or unexported fields }
var Firefox_110 = ClientProfile{ // contains filtered or unexported fields }
var Firefox_117 = ClientProfile{ // contains filtered or unexported fields }
var Firefox_120 = ClientProfile{ // contains filtered or unexported fields }
var Firefox_123 = ClientProfile{ // contains filtered or unexported fields }
var Firefox_132 = ClientProfile{ // contains filtered or unexported fields }
var Firefox_133 = ClientProfile{ // contains filtered or unexported fields }
var Firefox_135 = ClientProfile{ // contains filtered or unexported fields }
var Firefox_146_PSK = ClientProfile{ // contains filtered or unexported fields }
var Firefox_147 = ClientProfile{ // contains filtered or unexported fields }
var Firefox_147_PSK = ClientProfile{ // contains filtered or unexported fields }
var Firefox_148 = ClientProfile{ // contains filtered or unexported fields }
var MMSIos = ClientProfile{ // contains filtered or unexported fields }
var MMSIos2 = getMMSClientProfile2()
var MMSIos3 = getMMSClientProfile3()
var MappedTLSClients = map[string]ClientProfile{ "chrome_103": Chrome_103, "chrome_104": Chrome_104, "chrome_105": Chrome_105, "chrome_106": Chrome_106, "chrome_107": Chrome_107, "chrome_108": Chrome_108, "chrome_109": Chrome_109, "chrome_110": Chrome_110, "chrome_111": Chrome_111, "chrome_112": Chrome_112, "chrome_116_PSK": Chrome_116_PSK, "chrome_116_PSK_PQ": Chrome_116_PSK_PQ, "chrome_117": Chrome_117, "chrome_120": Chrome_120, "chrome_124": Chrome_124, "chrome_130_PSK": Chrome_130_PSK, "chrome_131": Chrome_131, "chrome_131_PSK": Chrome_131_PSK, "chrome_133": Chrome_133, "chrome_133_PSK": Chrome_133_PSK, "chrome_144": Chrome_144, "chrome_144_PSK": Chrome_144_PSK, "chrome_146": Chrome_146, "chrome_146_PSK": Chrome_146_PSK, "chrome_150": Chrome_150, "chrome_150_PSK": Chrome_150_PSK, "brave_146": Brave_146, "brave_146_PSK": Brave_146_PSK, "safari_15_6_1": Safari_15_6_1, "safari_16_0": Safari_16_0, "safari_ipad_15_6": Safari_Ipad_15_6, "safari_ios_15_5": Safari_IOS_15_5, "safari_ios_15_6": Safari_IOS_15_6, "safari_ios_16_0": Safari_IOS_16_0, "safari_ios_17_0": Safari_IOS_17_0, "safari_ios_18_0": Safari_IOS_18_0, "safari_ios_18_5": Safari_IOS_18_5, "safari_ios_26_0": Safari_IOS_26_0, "firefox_102": Firefox_102, "firefox_104": Firefox_104, "firefox_105": Firefox_105, "firefox_106": Firefox_106, "firefox_108": Firefox_108, "firefox_110": Firefox_110, "firefox_117": Firefox_117, "firefox_120": Firefox_120, "firefox_123": Firefox_123, "firefox_132": Firefox_132, "firefox_133": Firefox_133, "firefox_135": Firefox_135, "firefox_146_PSK": Firefox_146_PSK, "firefox_147": Firefox_147, "firefox_147_PSK": Firefox_147_PSK, "firefox_148": Firefox_148, "opera_89": Opera_89, "opera_90": Opera_90, "opera_91": Opera_91, "zalando_android_mobile": ZalandoAndroidMobile, "zalando_ios_mobile": ZalandoIosMobile, "nike_ios_mobile": NikeIosMobile, "nike_android_mobile": NikeAndroidMobile, "cloudscraper": CloudflareCustom, "mms_ios": MMSIos, "mms_ios_1": MMSIos, "mms_ios_2": MMSIos2, "mms_ios_3": MMSIos3, "mesh_ios": MeshIos, "mesh_ios_1": MeshIos, "mesh_ios_2": MeshIos2, "mesh_android": MeshAndroid, "mesh_android_1": MeshAndroid, "mesh_android_2": MeshAndroid2, "confirmed_ios": ConfirmedIos, "confirmed_android": ConfirmedAndroid, "okhttp4_android_7": Okhttp4Android7, "okhttp4_android_8": Okhttp4Android8, "okhttp4_android_9": Okhttp4Android9, "okhttp4_android_10": Okhttp4Android10, "okhttp4_android_11": Okhttp4Android11, "okhttp4_android_12": Okhttp4Android12, "okhttp4_android_13": Okhttp4Android13, }
var MeshAndroid = ClientProfile{ // contains filtered or unexported fields }
var MeshAndroid2 = ClientProfile{ // contains filtered or unexported fields }
var MeshIos = ClientProfile{ // contains filtered or unexported fields }
var MeshIos2 = ClientProfile{ // contains filtered or unexported fields }
var NikeAndroidMobile = ClientProfile{ // contains filtered or unexported fields }
var NikeIosMobile = ClientProfile{ // contains filtered or unexported fields }
var Okhttp4Android10 = ClientProfile{ // contains filtered or unexported fields }
var Okhttp4Android11 = ClientProfile{ // contains filtered or unexported fields }
var Okhttp4Android12 = ClientProfile{ // contains filtered or unexported fields }
var Okhttp4Android13 = ClientProfile{ // contains filtered or unexported fields }
var Okhttp4Android7 = ClientProfile{ // contains filtered or unexported fields }
var Okhttp4Android8 = ClientProfile{ // contains filtered or unexported fields }
var Okhttp4Android9 = ClientProfile{ // contains filtered or unexported fields }
var Opera_89 = ClientProfile{ // contains filtered or unexported fields }
var Opera_90 = ClientProfile{ // contains filtered or unexported fields }
var Opera_91 = ClientProfile{ // contains filtered or unexported fields }
var Safari_15_6_1 = ClientProfile{ // contains filtered or unexported fields }
var Safari_16_0 = ClientProfile{ // contains filtered or unexported fields }
var Safari_IOS_15_5 = ClientProfile{ // contains filtered or unexported fields }
var Safari_IOS_15_6 = ClientProfile{ // contains filtered or unexported fields }
var Safari_IOS_16_0 = ClientProfile{ // contains filtered or unexported fields }
var Safari_IOS_17_0 = ClientProfile{ // contains filtered or unexported fields }
var Safari_IOS_18_0 = ClientProfile{ // contains filtered or unexported fields }
var Safari_IOS_18_5 = ClientProfile{ // contains filtered or unexported fields }
var Safari_IOS_26_0 = ClientProfile{ // contains filtered or unexported fields }
var Safari_Ipad_15_6 = ClientProfile{ // contains filtered or unexported fields }
var ZalandoAndroidMobile = ClientProfile{ // contains filtered or unexported fields }
var ZalandoIosMobile = ClientProfile{ // contains filtered or unexported fields }
Functions ¶
This section is empty.
Types ¶
type ClientProfile ¶
type ClientProfile struct {
// contains filtered or unexported fields
}
func NewClientProfile ¶
func NewClientProfile(clientHelloId tls.ClientHelloID, settings map[http2.SettingID]uint32, settingsOrder []http2.SettingID, pseudoHeaderOrder []string, connectionFlow uint32, priorities []http2.Priority, headerPriority *http2.PriorityParam, streamID uint32, allowHTTP bool, http3Settings map[uint64]uint64, http3SettingsOrder []uint64, http3PriorityParam uint32, http3PseudoHeaderOrder []string, http3SendGreaseFrames bool) ClientProfile
func (ClientProfile) GetAllowHTTP ¶
func (c ClientProfile) GetAllowHTTP() bool
func (ClientProfile) GetClientHelloId ¶
func (c ClientProfile) GetClientHelloId() tls.ClientHelloID
func (ClientProfile) GetClientHelloSpec ¶
func (c ClientProfile) GetClientHelloSpec() (tls.ClientHelloSpec, error)
func (ClientProfile) GetClientHelloStr ¶
func (c ClientProfile) GetClientHelloStr() string
func (ClientProfile) GetConnectionFlow ¶
func (c ClientProfile) GetConnectionFlow() uint32
func (ClientProfile) GetHeaderPriority ¶
func (c ClientProfile) GetHeaderPriority() *http2.PriorityParam
func (ClientProfile) GetHttp3PriorityParam ¶
func (c ClientProfile) GetHttp3PriorityParam() uint32
func (ClientProfile) GetHttp3PseudoHeaderOrder ¶
func (c ClientProfile) GetHttp3PseudoHeaderOrder() []string
func (ClientProfile) GetHttp3SendGreaseFrames ¶
func (c ClientProfile) GetHttp3SendGreaseFrames() bool
func (ClientProfile) GetHttp3Settings ¶
func (c ClientProfile) GetHttp3Settings() map[uint64]uint64
func (ClientProfile) GetHttp3SettingsOrder ¶
func (c ClientProfile) GetHttp3SettingsOrder() []uint64
func (ClientProfile) GetPriorities ¶
func (c ClientProfile) GetPriorities() []http2.Priority
func (ClientProfile) GetPseudoHeaderOrder ¶
func (c ClientProfile) GetPseudoHeaderOrder() []string
func (ClientProfile) GetSettings ¶
func (c ClientProfile) GetSettings() map[http2.SettingID]uint32
func (ClientProfile) GetSettingsOrder ¶
func (c ClientProfile) GetSettingsOrder() []http2.SettingID
func (ClientProfile) GetStreamID ¶
func (c ClientProfile) GetStreamID() uint32
func (ClientProfile) GetWebSocketCompressionMode ¶
func (c ClientProfile) GetWebSocketCompressionMode() int
GetWebSocketCompressionMode returns the permessage-deflate compression mode used for WebSocket frames (WebSocketCompressionDisabled, WebSocketCompressionNoContextTakeover or WebSocketCompressionContextTakeover).
func (ClientProfile) GetWebSocketExtensions ¶
func (c ClientProfile) GetWebSocketExtensions() string
GetWebSocketExtensions returns the exact value of the Sec-WebSocket-Extensions header sent during the WebSocket handshake (e.g. "permessage-deflate; client_max_window_bits"). An empty string means "use the browser defaults derived from the profile".
func (ClientProfile) GetWebSocketHeaderOrder ¶
func (c ClientProfile) GetWebSocketHeaderOrder() []string
GetWebSocketHeaderOrder returns the order in which WebSocket handshake headers are written on the wire. Headers not listed are appended in alphabetical order after the listed ones. An empty slice means "use the browser defaults derived from the profile's client hello".
func (ClientProfile) GetWebTransportApplicationProtocols ¶
func (c ClientProfile) GetWebTransportApplicationProtocols() []string
GetWebTransportApplicationProtocols returns the WebTransport application protocols offered during session establishment.
func (ClientProfile) WithWebSocketCompressionMode ¶
func (c ClientProfile) WithWebSocketCompressionMode(mode int) ClientProfile
WithWebSocketCompressionMode returns a copy of the profile with the given WebSocket permessage-deflate compression mode.
func (ClientProfile) WithWebSocketExtensions ¶
func (c ClientProfile) WithWebSocketExtensions(extensions string) ClientProfile
WithWebSocketExtensions returns a copy of the profile with the given Sec-WebSocket-Extensions header value.
func (ClientProfile) WithWebSocketHeaderOrder ¶
func (c ClientProfile) WithWebSocketHeaderOrder(order []string) ClientProfile
WithWebSocketHeaderOrder returns a copy of the profile with the given WebSocket handshake header order. Use it to fine-tune the connection establishment mimicry of a specific browser build.
func (ClientProfile) WithWebTransportApplicationProtocols ¶
func (c ClientProfile) WithWebTransportApplicationProtocols(protocols []string) ClientProfile
WithWebTransportApplicationProtocols returns a copy of the profile with the given WebTransport application protocols.