From b578dc81df26fd9349afa0d0213ea0cab50d949b Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Mon, 20 Oct 2025 01:08:21 -0400 Subject: [PATCH] IT WORKS! --- .../create_listen_websocket_new_raw.rs | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/crates/api_clients/grok_client/src/requests/listen_websocket/create_listen_websocket_new_raw.rs b/crates/api_clients/grok_client/src/requests/listen_websocket/create_listen_websocket_new_raw.rs index 12b1aa649a..91f1ff824e 100644 --- a/crates/api_clients/grok_client/src/requests/listen_websocket/create_listen_websocket_new_raw.rs +++ b/crates/api_clients/grok_client/src/requests/listen_websocket/create_listen_websocket_new_raw.rs @@ -5,7 +5,7 @@ use crate::requests::listen_websocket::cookies::{FIREFOX_IMPERSONATE_COOKIE_WITH use std::ops::Deref; use std::time::Duration; use tokio::io::AsyncReadExt; -use wreq::header::{HeaderMap, HeaderName, ACCEPT, ACCEPT_ENCODING, ACCEPT_LANGUAGE, CACHE_CONTROL, CONNECTION, COOKIE, HOST, ORIGIN, PRAGMA, SEC_WEBSOCKET_EXTENSIONS, SEC_WEBSOCKET_KEY, SEC_WEBSOCKET_VERSION, UPGRADE, USER_AGENT}; +use wreq::header::{HeaderMap, HeaderName, OrigHeaderMap, ACCEPT, ACCEPT_ENCODING, ACCEPT_LANGUAGE, CACHE_CONTROL, CONNECTION, COOKIE, HOST, ORIGIN, PRAGMA, SEC_WEBSOCKET_EXTENSIONS, SEC_WEBSOCKET_KEY, SEC_WEBSOCKET_VERSION, UPGRADE, USER_AGENT}; use wreq::{Client, Proxy, Version}; use wreq_util::Emulation; @@ -61,6 +61,26 @@ pub async fn create_listen_websocket_new_raw() -> Result<(), GrokError> { //.http1_only() // NB: Not needed - websockets are sent over HTTP/1.1 without this configuration //.cookie_store(true) + let mut original_headers = OrigHeaderMap::new(); + + original_headers.insert("Host"); + original_headers.insert("User-Agent"); + original_headers.insert("Accept"); + original_headers.insert("Accept-Language"); + original_headers.insert("Accept-Encoding"); + original_headers.insert("Sec-WebSocket-Version"); + original_headers.insert("Origin"); + original_headers.insert("Sec-WebSocket-Extensions"); + original_headers.insert("Sec-WebSocket-Key"); + original_headers.insert("Cookie"); + original_headers.insert("Sec-Fetch-Dest"); + original_headers.insert("Sec-Fetch-Mode"); + original_headers.insert("Sec-Fetch-Site"); + original_headers.insert("Pragma"); + original_headers.insert("Cache-Control"); + original_headers.insert("Upgrade"); + original_headers.insert("Connection"); + // NB: Sending a normal GET request seems to punch through Cloudflare and get a 400 instead let builder = client.get(WEBSOCKET_HTTPS_URL) .version(Version::HTTP_11) @@ -82,6 +102,7 @@ pub async fn create_listen_websocket_new_raw() -> Result<(), GrokError> { .header(PRAGMA, "no-cache") .header(CACHE_CONTROL, "no-cache") .header(UPGRADE, "websocket") + .orig_headers(original_headers) ; // TODO: Connect: keep-alive --> keep-alive, Upgrade