Struct TlsProfile
pub struct TlsProfile {
pub client_hello: ClientHello,
pub ws_client_config_overwrites: Option<WsClientConfigOverwrites>,
}ua only.Expand description
Profile of the user-agent’s TLS (client) configuration.
It is used to emulate the TLS configuration of the user-agent: the captured
ClientHello is the fingerprint to reproduce.
Fields§
§client_hello: ClientHelloThe captured ClientHello (the TLS fingerprint to emulate).
ws_client_config_overwrites: Option<WsClientConfigOverwrites>Optional WebSocket-specific client config overwrites.
Implementations§
§impl TlsProfile
impl TlsProfile
pub fn compute_ja3(
&self,
negotiated_tls_version: Option<ProtocolVersion>,
) -> Result<Ja3, Ja3ComputeError>
pub fn compute_ja3( &self, negotiated_tls_version: Option<ProtocolVersion>, ) -> Result<Ja3, Ja3ComputeError>
Compute the Ja3 (hash) based on this TlsProfile.
This can be useful in case you want to compare profiles loaded into memory of your service with the profile of an incoming request.
As specified by https://github.com/salesforce/ja3`.
pub fn compute_ja4(
&self,
negotiated_tls_version: Option<ProtocolVersion>,
) -> Result<Ja4, Ja4ComputeError>
pub fn compute_ja4( &self, negotiated_tls_version: Option<ProtocolVersion>, ) -> Result<Ja4, Ja4ComputeError>
Compute the Ja4 (hash) on this TlsProfile.
This can be useful in case you want to compare profiles loaded into memory of your service with the profile of an incoming request.
As specified by https://blog.foxio.io/ja4%2B-network-fingerprinting and reference implementations found at https://github.com/FoxIO-LLC/ja4.
pub fn compute_peet(&self) -> Result<PeetPrint, PeetComputeError>
pub fn compute_peet(&self) -> Result<PeetPrint, PeetComputeError>
Compute the PeetPrint (hash) on this TlsProfile.
This can be useful in case you want to compare profiles loaded into memory of your service with the profile of an incoming request.
As specified by https://github.com/pagpeter/TrackMe?tab=readme-ov-file#custom-fingerpint-peetprint
Trait Implementations§
§impl Clone for TlsProfile
impl Clone for TlsProfile
§fn clone(&self) -> TlsProfile
fn clone(&self) -> TlsProfile
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for TlsProfile
impl Debug for TlsProfile
§impl<'de> Deserialize<'de> for TlsProfile
impl<'de> Deserialize<'de> for TlsProfile
§fn deserialize<__D>(
__deserializer: __D,
) -> Result<TlsProfile, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<TlsProfile, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Extension for TlsProfile
§impl Serialize for TlsProfile
impl Serialize for TlsProfile
§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl TlsExtension for TlsProfile
impl UaExtension for TlsProfile
Auto Trait Implementations§
impl Freeze for TlsProfile
impl RefUnwindSafe for TlsProfile
impl Send for TlsProfile
impl Sync for TlsProfile
impl Unpin for TlsProfile
impl UnsafeUnpin for TlsProfile
impl UnwindSafe for TlsProfile
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more§impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>
§impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
type Error = <U as RamaTryFrom<T, CrateMarker>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<V, F> ValueFormatter<&V> for F
impl<V, F> ValueFormatter<&V> for F
§fn format_value(writer: impl ValueWriter, value: &&V)
fn format_value(writer: impl ValueWriter, value: &&V)
value to writer§impl<V, F> ValueFormatter<Arc<V>> for F
impl<V, F> ValueFormatter<Arc<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Arc<V>)
fn format_value(writer: impl ValueWriter, value: &Arc<V>)
value to writer§impl<V, F> ValueFormatter<Box<V>> for F
impl<V, F> ValueFormatter<Box<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Box<V>)
fn format_value(writer: impl ValueWriter, value: &Box<V>)
value to writer§impl<V, F> ValueFormatter<Cow<'_, V>> for F
impl<V, F> ValueFormatter<Cow<'_, V>> for F
§fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
value to writer§impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
§fn format_value(writer: impl ValueWriter, value: &Option<V>)
fn format_value(writer: impl ValueWriter, value: &Option<V>)
value to writer