From 47ef6a06d47416559609c385d5234d155938f3e3 Mon Sep 17 00:00:00 2001 From: chowder <16789070+chowder@users.noreply.github.com> Date: Fri, 29 Aug 2025 21:26:53 +0100 Subject: [PATCH] fix: set User-Agent header in proxied media requests to match currently spoofed device --- src/client.rs | 6 ++++++ src/oauth.rs | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/client.rs b/src/client.rs index 76369cad..716dc0eb 100644 --- a/src/client.rs +++ b/src/client.rs @@ -165,6 +165,12 @@ async fn stream(url: &str, req: &Request) -> Result, String } } + // Add User-Agent header of the currently spoofed device + { + let client = OAUTH_CLIENT.load_full(); + builder = builder.header("User-Agent", client.user_agent()); + } + let stream_request = builder.body(Body::empty()).map_err(|_| "Couldn't build empty body in stream".to_string())?; client diff --git a/src/oauth.rs b/src/oauth.rs index 9654e0c8..9fb2fd5b 100644 --- a/src/oauth.rs +++ b/src/oauth.rs @@ -148,6 +148,10 @@ impl Oauth { Ok(()) } + + pub fn user_agent(&self) -> &str { + &self.device.user_agent + } } #[derive(Debug)] @@ -209,6 +213,7 @@ struct Device { oauth_id: String, initial_headers: HashMap, headers: HashMap, + user_agent: String, } impl Device { @@ -230,7 +235,7 @@ impl Device { // Android device headers let headers: HashMap = HashMap::from([ - ("User-Agent".into(), android_user_agent), + ("User-Agent".into(), android_user_agent.clone()), ("x-reddit-retry".into(), "algo=no-retries".into()), ("x-reddit-compression".into(), "1".into()), ("x-reddit-qos".into(), qos), @@ -246,6 +251,7 @@ impl Device { oauth_id: REDDIT_ANDROID_OAUTH_CLIENT_ID.to_string(), headers: headers.clone(), initial_headers: headers, + user_agent: android_user_agent, } } fn new() -> Self {