Если правильно понял работу с
reqwest_cookie_store , то следующий код позволяет сохранять
и использовать куки из файла. Такой файл создал и поместил в него тестовую куку.
кодlet s = "... /sites/site_01.json";
let cookie_store = {
if let Ok(file) = std::fs::File::open(s).map(std::io::BufReader::new) {
cookie_store::CookieStore::load(file, |c| serde_json::from_str(c)).unwrap()
} else {
reqwest_cookie_store::CookieStore::new(None)
}
};
let cookie_store = reqwest_cookie_store::CookieStoreMutex::new(cookie_store);
let cookie_store = std::sync::Arc::new(cookie_store);
let client = ClientBuilder::new()
.cookie_provider(std::sync::Arc::clone(&cookie_store))
.build()?;
далее по кодуlet client = ClientBuilder::new()
.cookie_provider(std::sync::Arc::clone(&cookie_store))
.build()?;
// код для работы с набором сайтов и их индивидуальными параметрами заголовков и кук ....
// `RequestBuilder`:
let r = client.get(urls[i]).headers(vec_headers[i].clone()).build()?;
println!("client_Headers: {:#?}", r.headers());
let resp = client.execute(r).await?;
println!("\n Status: {} \n", resp.status());
println!("server_Headers: {:#?}", resp.headers());
let body = resp.text().await?;
println!("Body: {}", body);
так вижу в wireshark параметры, которые отправил клиент:
Hypertext Transfer Protocol
> GET /info.json HTTP/1.1\r\n
Request Method: GET
Request URI: /info.json
Request Version: HTTP/1.1
host: site_01.com\r\n
user-agent: Mozilla...\r\n
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,...;q=0.8\r\n
accept-language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3\r\n
accept-encoding: gzip, deflate\r\n
dnt: 1\r\n
sec-gpc: 1\r\n
connection: keep-alive\r\n
upgrade-insecure-requests: 1\r\n
priority: u=0, i\r\n
pragma: no-cache\r\n
cache-control: no-cache\r\n
> cookie: my_test_id=74e97a8a.63beb327ec4d9\r\n
Cookie pair: my_test_id=74e97a8a.63beb327ec4d9
так (без куки) выводит `client_Headers:` в приложении:
client_Headers: {
"host": "site_01.com",
"user-agent": "Mozilla...",
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,...;q=0.8",
"accept-language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"accept-encoding": "gzip, deflate",
"dnt": "1",
"sec-gpc": "1",
"connection": "keep-alive",
"upgrade-insecure-requests": "1",
"priority": "u=0, i",
"pragma": "no-cache",
"cache-control": "no-cache",
}
Как в приложении выводить куку, которая для конкретного сайта подготовлена для отправки от клиента?
Возможно ли настроить данное приложение на раст так, чтобы расшифровывать https трафик?
Вижу в wireshark алгоритм rsa
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
ну и крокозяблы. Файл
(Pre)Master Secret log filename
в настройках TLC wireshark такое не решает, он помогает с
Cipher Suite: TLS_AES_128_GCM_SHA256 (0x1301)
и подобными.