Chrome v106
This commit is contained in:
		| @@ -14,6 +14,7 @@ pub(crate) fn configure_chrome(ver: ChromeVersion, builder: ClientBuilder) -> Cl | |||||||
|         .http2_max_concurrent_streams(settings.http2.max_concurrent_streams) |         .http2_max_concurrent_streams(settings.http2.max_concurrent_streams) | ||||||
|         .http2_max_header_list_size(settings.http2.max_header_list_size) |         .http2_max_header_list_size(settings.http2.max_header_list_size) | ||||||
|         .http2_header_table_size(settings.http2.header_table_size) |         .http2_header_table_size(settings.http2.header_table_size) | ||||||
|  |         .http2_enable_push(settings.http2.enable_push) | ||||||
|         .replace_default_headers(settings.headers) |         .replace_default_headers(settings.headers) | ||||||
|         .brotli(settings.brotli) |         .brotli(settings.brotli) | ||||||
|         .gzip(settings.gzip) |         .gzip(settings.gzip) | ||||||
| @@ -25,4 +26,5 @@ pub(crate) fn configure_chrome(ver: ChromeVersion, builder: ClientBuilder) -> Cl | |||||||
| pub enum ChromeVersion { | pub enum ChromeVersion { | ||||||
|     V104, |     V104, | ||||||
|     V105, |     V105, | ||||||
|  |     V106, | ||||||
| } | } | ||||||
|   | |||||||
| @@ -4,10 +4,12 @@ use super::ChromeVersion; | |||||||
|  |  | ||||||
| mod v104; | mod v104; | ||||||
| mod v105; | mod v105; | ||||||
|  | mod v106; | ||||||
|  |  | ||||||
| pub(super) fn get_config_from_ver(ver: ChromeVersion) -> BrowserSettings { | pub(super) fn get_config_from_ver(ver: ChromeVersion) -> BrowserSettings { | ||||||
|     match ver { |     match ver { | ||||||
|         ChromeVersion::V104 => v104::get_settings(), |         ChromeVersion::V104 => v104::get_settings(), | ||||||
|         ChromeVersion::V105 => v105::get_settings(), |         ChromeVersion::V105 => v105::get_settings(), | ||||||
|  |         ChromeVersion::V106 => v106::get_settings(), | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -19,6 +19,7 @@ pub(super) fn get_settings() -> BrowserSettings { | |||||||
|             max_concurrent_streams: 1000, |             max_concurrent_streams: 1000, | ||||||
|             max_header_list_size: 262144, |             max_header_list_size: 262144, | ||||||
|             header_table_size: 65536, |             header_table_size: 65536, | ||||||
|  |             enable_push: None, | ||||||
|         }, |         }, | ||||||
|         headers: create_headers(), |         headers: create_headers(), | ||||||
|         gzip: true, |         gzip: true, | ||||||
|   | |||||||
| @@ -19,6 +19,7 @@ pub(super) fn get_settings() -> BrowserSettings { | |||||||
|             max_concurrent_streams: 1000, |             max_concurrent_streams: 1000, | ||||||
|             max_header_list_size: 262144, |             max_header_list_size: 262144, | ||||||
|             header_table_size: 65536, |             header_table_size: 65536, | ||||||
|  |             enable_push: None, | ||||||
|         }, |         }, | ||||||
|         headers: create_headers(), |         headers: create_headers(), | ||||||
|         gzip: true, |         gzip: true, | ||||||
|   | |||||||
							
								
								
									
										111
									
								
								src/browser/chrome/ver/v106.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								src/browser/chrome/ver/v106.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,111 @@ | |||||||
|  | use std::sync::Arc; | ||||||
|  |  | ||||||
|  | use boring::ssl::{ | ||||||
|  |     CertCompressionAlgorithm, SslConnector, SslConnectorBuilder, SslMethod, SslVersion, | ||||||
|  | }; | ||||||
|  | use http::{ | ||||||
|  |     header::{ACCEPT, ACCEPT_ENCODING, ACCEPT_LANGUAGE, UPGRADE_INSECURE_REQUESTS, USER_AGENT}, | ||||||
|  |     HeaderMap, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | use crate::browser::{BrowserSettings, Http2Data}; | ||||||
|  |  | ||||||
|  | pub(super) fn get_settings() -> BrowserSettings { | ||||||
|  |     BrowserSettings { | ||||||
|  |         tls_builder_func: Arc::new(create_ssl_connector), | ||||||
|  |         http2: Http2Data { | ||||||
|  |             initial_stream_window_size: 6291456, | ||||||
|  |             initial_connection_window_size: 15728640, | ||||||
|  |             max_concurrent_streams: 1000, | ||||||
|  |             max_header_list_size: 262144, | ||||||
|  |             header_table_size: 65536, | ||||||
|  |             enable_push: Some(false), | ||||||
|  |         }, | ||||||
|  |         headers: create_headers(), | ||||||
|  |         gzip: true, | ||||||
|  |         brotli: true, | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | fn create_ssl_connector() -> SslConnectorBuilder { | ||||||
|  |     let mut builder = SslConnector::builder(SslMethod::tls()).unwrap(); | ||||||
|  |  | ||||||
|  |     builder.set_grease_enabled(true); | ||||||
|  |  | ||||||
|  |     builder.enable_ocsp_stapling(); | ||||||
|  |  | ||||||
|  |     let cipher_list = [ | ||||||
|  |         "TLS_AES_128_GCM_SHA256", | ||||||
|  |         "TLS_AES_256_GCM_SHA384", | ||||||
|  |         "TLS_CHACHA20_POLY1305_SHA256", | ||||||
|  |         "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", | ||||||
|  |         "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", | ||||||
|  |         "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", | ||||||
|  |         "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", | ||||||
|  |         "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", | ||||||
|  |         "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256", | ||||||
|  |         "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", | ||||||
|  |         "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", | ||||||
|  |         "TLS_RSA_WITH_AES_128_GCM_SHA256", | ||||||
|  |         "TLS_RSA_WITH_AES_256_GCM_SHA384", | ||||||
|  |         "TLS_RSA_WITH_AES_128_CBC_SHA", | ||||||
|  |         "TLS_RSA_WITH_AES_256_CBC_SHA", | ||||||
|  |     ]; | ||||||
|  |  | ||||||
|  |     builder.set_cipher_list(&cipher_list.join(":")).unwrap(); | ||||||
|  |  | ||||||
|  |     let sigalgs_list = [ | ||||||
|  |         "ecdsa_secp256r1_sha256", | ||||||
|  |         "rsa_pss_rsae_sha256", | ||||||
|  |         "rsa_pkcs1_sha256", | ||||||
|  |         "ecdsa_secp384r1_sha384", | ||||||
|  |         "rsa_pss_rsae_sha384", | ||||||
|  |         "rsa_pkcs1_sha384", | ||||||
|  |         "rsa_pss_rsae_sha512", | ||||||
|  |         "rsa_pkcs1_sha512", | ||||||
|  |     ]; | ||||||
|  |  | ||||||
|  |     builder.set_sigalgs_list(&sigalgs_list.join(":")).unwrap(); | ||||||
|  |  | ||||||
|  |     builder.enable_signed_cert_timestamps(); | ||||||
|  |  | ||||||
|  |     builder.set_alpn_protos(b"\x02h2\x08http/1.1").unwrap(); | ||||||
|  |  | ||||||
|  |     builder | ||||||
|  |         .add_cert_compression_alg(CertCompressionAlgorithm::Brotli) | ||||||
|  |         .unwrap(); | ||||||
|  |  | ||||||
|  |     builder | ||||||
|  |         .set_min_proto_version(Some(SslVersion::TLS1_2)) | ||||||
|  |         .unwrap(); | ||||||
|  |  | ||||||
|  |     builder | ||||||
|  |         .set_max_proto_version(Some(SslVersion::TLS1_3)) | ||||||
|  |         .unwrap(); | ||||||
|  |  | ||||||
|  |     builder | ||||||
|  | } | ||||||
|  |  | ||||||
|  | fn create_headers() -> HeaderMap { | ||||||
|  |     let mut headers = HeaderMap::new(); | ||||||
|  |  | ||||||
|  |     headers.insert( | ||||||
|  |         "sec-ch-ua", | ||||||
|  |         "\"Chromium\";v=\"106\", \"Google Chrome\";v=\"106\", \"Not;A=Brand\";v=\"99\"" | ||||||
|  |             .parse() | ||||||
|  |             .unwrap(), | ||||||
|  |     ); | ||||||
|  |     headers.insert("sec-ch-ua-mobile", "?0".parse().unwrap()); | ||||||
|  |     headers.insert("sec-ch-ua-platform", "\"Windows\"".parse().unwrap()); | ||||||
|  |     headers.insert(UPGRADE_INSECURE_REQUESTS, "1".parse().unwrap()); | ||||||
|  |     headers.insert(USER_AGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36".parse().unwrap()); | ||||||
|  |     headers.insert(ACCEPT, "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9".parse().unwrap()); | ||||||
|  |     headers.insert("sec-fetch-site", "none".parse().unwrap()); | ||||||
|  |     headers.insert("sec-fetch-mode", "navigate".parse().unwrap()); | ||||||
|  |     headers.insert("sec-fetch-user", "?1".parse().unwrap()); | ||||||
|  |     headers.insert("sec-fetch-dest", "document".parse().unwrap()); | ||||||
|  |     headers.insert(ACCEPT_ENCODING, "gzip, deflate, br".parse().unwrap()); | ||||||
|  |     headers.insert(ACCEPT_LANGUAGE, "en-US,en;q=0.9".parse().unwrap()); | ||||||
|  |  | ||||||
|  |     headers | ||||||
|  | } | ||||||
| @@ -28,4 +28,5 @@ struct Http2Data { | |||||||
|     pub max_concurrent_streams: u32, |     pub max_concurrent_streams: u32, | ||||||
|     pub max_header_list_size: u32, |     pub max_header_list_size: u32, | ||||||
|     pub header_table_size: u32, |     pub header_table_size: u32, | ||||||
|  |     pub enable_push: Option<bool>, | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user