From bf8cae6a48839f9fb42c2e30a9f5832667b072c5 Mon Sep 17 00:00:00 2001 From: Diego Heras Date: Wed, 16 Dec 2020 01:42:41 +0100 Subject: [PATCH] core: allow to set user-agent header per indexer (#10528) --- src/Jackett.Common/Jackett.Common.csproj | 2 +- .../Utils/Clients/HttpWebClient.cs | 20 ++++++++++--------- .../Utils/Clients/HttpWebClient2.cs | 14 ++++++++----- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/Jackett.Common/Jackett.Common.csproj b/src/Jackett.Common/Jackett.Common.csproj index be121c3b9..ebffb41ac 100644 --- a/src/Jackett.Common/Jackett.Common.csproj +++ b/src/Jackett.Common/Jackett.Common.csproj @@ -14,7 +14,7 @@ - + diff --git a/src/Jackett.Common/Utils/Clients/HttpWebClient.cs b/src/Jackett.Common/Utils/Clients/HttpWebClient.cs index cc962101b..0113f11b0 100644 --- a/src/Jackett.Common/Utils/Clients/HttpWebClient.cs +++ b/src/Jackett.Common/Utils/Clients/HttpWebClient.cs @@ -75,11 +75,9 @@ namespace Jackett.Common.Utils.Clients cookies.Add(cookieUrl, new Cookie(kv.Key, kv.Value)); } - var userAgent = webRequest.EmulateBrowser.Value ? BrowserUtil.ChromeUserAgent : "Jackett/" + configService.GetVersion(); - using (var clearanceHandlr = new ClearanceHandler(serverConfig.FlareSolverrUrl)) { - clearanceHandlr.UserAgent = userAgent; + clearanceHandlr.UserAgent = BrowserUtil.ChromeUserAgent; clearanceHandlr.MaxTimeout = 50000; using (var clientHandlr = new HttpClientHandler { @@ -94,12 +92,6 @@ namespace Jackett.Common.Utils.Clients clearanceHandlr.InnerHandler = clientHandlr; using (var client = new HttpClient(clearanceHandlr)) { - if (webRequest.EmulateBrowser == true) - client.DefaultRequestHeaders.Add("User-Agent", BrowserUtil.ChromeUserAgent); - else - client.DefaultRequestHeaders.Add("User-Agent", "Jackett/" + configService.GetVersion()); - - HttpResponseMessage response = null; using (var request = new HttpRequestMessage()) { request.Headers.ExpectContinue = false; @@ -116,6 +108,15 @@ namespace Jackett.Common.Utils.Clients } } + // The User-Agent can be set by the indexer (in the headers) + if (string.IsNullOrWhiteSpace(request.Headers.UserAgent.ToString())) + { + if (webRequest.EmulateBrowser == true) + request.Headers.UserAgent.ParseAdd(BrowserUtil.ChromeUserAgent); + else + request.Headers.UserAgent.ParseAdd("Jackett/" + configService.GetVersion()); + } + if (!string.IsNullOrEmpty(webRequest.Referer)) request.Headers.Referrer = new Uri(webRequest.Referer); @@ -144,6 +145,7 @@ namespace Jackett.Common.Utils.Clients request.Method = HttpMethod.Get; } + HttpResponseMessage response; using (response = await client.SendAsync(request)) { var result = new WebResult diff --git a/src/Jackett.Common/Utils/Clients/HttpWebClient2.cs b/src/Jackett.Common/Utils/Clients/HttpWebClient2.cs index 5bf8d5655..332475bb0 100644 --- a/src/Jackett.Common/Utils/Clients/HttpWebClient2.cs +++ b/src/Jackett.Common/Utils/Clients/HttpWebClient2.cs @@ -104,11 +104,6 @@ namespace Jackett.Common.Utils.Clients request.Headers.ExpectContinue = false; request.RequestUri = new Uri(webRequest.Url); - if (webRequest.EmulateBrowser == true) - request.Headers.UserAgent.ParseAdd(BrowserUtil.ChromeUserAgent); - else - request.Headers.UserAgent.ParseAdd("Jackett/" + configService.GetVersion()); - // clear cookies from cookiecontainer var oldCookies = cookies.GetCookies(request.RequestUri); foreach (Cookie oldCookie in oldCookies) @@ -135,6 +130,15 @@ namespace Jackett.Common.Utils.Clients } } + // The User-Agent can be set by the indexer (in the headers) + if (string.IsNullOrWhiteSpace(request.Headers.UserAgent.ToString())) + { + if (webRequest.EmulateBrowser == true) + request.Headers.UserAgent.ParseAdd(BrowserUtil.ChromeUserAgent); + else + request.Headers.UserAgent.ParseAdd("Jackett/" + configService.GetVersion()); + } + if (!string.IsNullOrEmpty(webRequest.Referer)) request.Headers.Referrer = new Uri(webRequest.Referer);