pub struct DeviceFingerprint {Show 16 fields
pub cipher_list: &'static str,
pub sigalgs_list: &'static str,
pub curves_list: &'static str,
pub extension_permutation: Vec<u16>,
pub cert_compression: Vec<CertCompression>,
pub min_tls_version: &'static str,
pub ech_grease: bool,
pub permute_extensions: bool,
pub no_session_ticket: bool,
pub grease_enabled: bool,
pub ocsp_stapling: bool,
pub signed_cert_timestamps: bool,
pub key_shares_limit: u8,
pub delegated_credentials: Option<&'static str>,
pub record_size_limit: Option<u16>,
pub alps_use_new_codepoint: bool,
}Expand description
Per-browser TLS ClientHello fingerprint configuration.
Holds the raw TLS parameters needed to produce a JA3/JA4-identical
ClientHello. Call to_tls_options to convert
into hpx’s TlsOptions.
Fields§
§cipher_list: &'static strColon-separated cipher suite string for BoringSSL.
sigalgs_list: &'static strColon-separated signature algorithms string.
curves_list: &'static strColon-separated curves list.
extension_permutation: Vec<u16>Extension type IDs in emission order.
cert_compression: Vec<CertCompression>Certificate compression algorithms.
min_tls_version: &'static strMinimum TLS version ("1.0" or "1.2").
ech_grease: boolEnable ECH GREASE.
permute_extensions: boolEnable extension permutation (Fisher-Yates shuffle).
no_session_ticket: boolDisable session tickets (Safari iOS quirk).
grease_enabled: boolGREASE enabled (disabled for Firefox).
ocsp_stapling: boolEnable OCSP stapling.
signed_cert_timestamps: boolEnable Signed Certificate Timestamps.
Maximum key shares.
delegated_credentials: Option<&'static str>Delegated credentials sigalg list (Firefox-only).
record_size_limit: Option<u16>Record size limit (Firefox-only).
alps_use_new_codepoint: boolUse new ALPS codepoint.
Implementations§
Source§impl DeviceFingerprint
impl DeviceFingerprint
Sourcepub fn to_tls_options(&self) -> TlsOptions
pub fn to_tls_options(&self) -> TlsOptions
Convert to hpx’s TlsOptions.
Note: extension_permutation is not set here because hpx’s
TlsOptionsBuilder uses boring’s ExtensionType which requires
platform-specific conversion. Use extension_permutation
to get the raw extension IDs.
Sourcepub fn get_extension_permutation(&self) -> Vec<u16>
pub fn get_extension_permutation(&self) -> Vec<u16>
Return the extension permutation, shuffled if this is a Chrome profile.
Sourcepub fn shuffled_chrome_permutation() -> Vec<u16>
pub fn shuffled_chrome_permutation() -> Vec<u16>
Fisher-Yates shuffle of the Chrome extension permutation (for testing).
Sourcepub fn for_device(device_class: DeviceClass, browser_name: &str) -> Self
pub fn for_device(device_class: DeviceClass, browser_name: &str) -> Self
Return the correct fingerprint for a device class and browser name.
Sourcepub fn chrome_147() -> Self
pub fn chrome_147() -> Self
Chrome 147 desktop/Android fingerprint.
Sourcepub fn safari_ios_18() -> Self
pub fn safari_ios_18() -> Self
Safari iOS 18 fingerprint.
Sourcepub fn firefox_135() -> Self
pub fn firefox_135() -> Self
Firefox 135 (NSS) fingerprint.
Trait Implementations§
Source§impl Clone for DeviceFingerprint
impl Clone for DeviceFingerprint
Source§fn clone(&self) -> DeviceFingerprint
fn clone(&self) -> DeviceFingerprint
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more