use super::http2::Http2Settings;
use super::tls::TlsFingerprint;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum FingerprintProfile {
#[default]
Chrome142,
Chrome143,
Chrome144,
Chrome145,
Chrome146,
Firefox133,
None,
}
impl FingerprintProfile {
pub fn user_agent(&self) -> &'static str {
match self {
Self::Chrome142 => {
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36"
}
Self::Chrome143 => {
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
}
Self::Chrome144 => {
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36"
}
Self::Chrome145 => {
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36"
}
Self::Chrome146 => {
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
}
Self::Firefox133 => {
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:133.0) Gecko/20100101 Firefox/133.0"
}
Self::None => "specter/0.1",
}
}
pub fn tls_fingerprint(&self) -> TlsFingerprint {
match self {
FingerprintProfile::Chrome142
| FingerprintProfile::Chrome143
| FingerprintProfile::Chrome144
| FingerprintProfile::Chrome145
| FingerprintProfile::Chrome146 => TlsFingerprint::chrome(),
FingerprintProfile::Firefox133 => TlsFingerprint::firefox_133(),
FingerprintProfile::None => TlsFingerprint::default(),
}
}
pub fn http2_settings(&self) -> Http2Settings {
match self {
FingerprintProfile::Chrome142
| FingerprintProfile::Chrome143
| FingerprintProfile::Chrome144
| FingerprintProfile::Chrome145
| FingerprintProfile::Chrome146 => Http2Settings::default(),
FingerprintProfile::Firefox133 => Http2Settings::firefox(),
FingerprintProfile::None => Http2Settings::default(),
}
}
}