Skip to main content

wreq_util/emulate/
profile.rs

1//! Emulation for different browsers.
2
3pub mod chrome;
4pub mod firefox;
5pub mod okhttp;
6pub mod opera;
7pub mod safari;
8
9use typed_builder::TypedBuilder;
10#[cfg(feature = "emulation-compression")]
11use wreq::header::ACCEPT_ENCODING;
12use wreq::{
13    Group,
14    header::{ACCEPT, ACCEPT_LANGUAGE, HeaderMap, HeaderName, HeaderValue, USER_AGENT},
15    http2::{
16        Http2Options, Priorities, Priority, PseudoId, PseudoOrder, SettingId, SettingsOrder,
17        StreamDependency, StreamId,
18    },
19    tls::{
20        AlpnProtocol, AlpsProtocol, ExtensionType, KeyShare, TlsOptions, TlsVersion,
21        compress::CertificateCompressor,
22    },
23};
24
25use super::{
26    Emulation, Platform,
27    compress::{BrotliCompressor, ZlibCompressor, ZstdCompressor},
28};
29
30fn build_standard_emulation(
31    group: &'static str,
32    tls_options: TlsOptions,
33    http2_options: Option<Http2Options>,
34    default_headers: Option<HeaderMap>,
35) -> wreq::Emulation {
36    let mut builder = wreq::Emulation::builder().tls_options(tls_options);
37
38    if let Some(http2_options) = http2_options {
39        builder = builder.http2_options(http2_options);
40    }
41
42    if let Some(headers) = default_headers {
43        builder = builder.headers(headers);
44    }
45
46    builder.build(Group::new(group))
47}