diff --git a/YahooFinanceApi/Yahoo - Historical.cs b/YahooFinanceApi/Yahoo - Historical.cs index da7c3ce..9a71347 100644 --- a/YahooFinanceApi/Yahoo - Historical.cs +++ b/YahooFinanceApi/Yahoo - Historical.cs @@ -119,6 +119,7 @@ Task _GetResponseStreamAsync(CancellationToken token) return url .WithCookie(YahooSession.Cookie.Name, YahooSession.Cookie.Value) + .WithHeader(YahooSession.UserAgentKey, YahooSession.UserAgentValue) .GetAsync(token) .ReceiveStream(); } diff --git a/YahooFinanceApi/Yahoo - Quote.cs b/YahooFinanceApi/Yahoo - Quote.cs index c0cf963..dfdabbd 100644 --- a/YahooFinanceApi/Yahoo - Quote.cs +++ b/YahooFinanceApi/Yahoo - Quote.cs @@ -92,6 +92,7 @@ public async Task> QueryAsync(Cancellation { data = await url .WithCookie(YahooSession.Cookie.Name, YahooSession.Cookie.Value) + .WithHeader(YahooSession.UserAgentKey, YahooSession.UserAgentValue) .GetAsync(token) .ReceiveJson() .ConfigureAwait(false); diff --git a/YahooFinanceApi/YahooFinanceApi.csproj b/YahooFinanceApi/YahooFinanceApi.csproj index 9615290..fc193f7 100644 --- a/YahooFinanceApi/YahooFinanceApi.csproj +++ b/YahooFinanceApi/YahooFinanceApi.csproj @@ -4,7 +4,7 @@ A handy Yahoo! Finance api wrapper, based on .NET standard 2.0 Copyright (c) 2016-2024 Karl Wan YahooFinanceApi - 2.3.2 + 2.3.3 latest Karl Wan netstandard2.0 @@ -12,6 +12,7 @@ YahooFinanceApi Yahoo;Finance;Stock;Quote;Eod;Dividend;Split +[03/06/2024] Fixed issue with missing HTTP Header [02/22/2024] Fixed issue with HTTP status code 500 when creating Yahoo session [12/10/2023] Fixed issue with HTTP status code 502 when creating Yahoo session [5/8/2023] Fixed too many requests error caused by missing user agent header @@ -41,7 +42,7 @@ false false false - 2.3.2 + 2.3.3 latest diff --git a/YahooFinanceApi/YahooSession.cs b/YahooFinanceApi/YahooSession.cs index 4bb7dde..e3be422 100644 --- a/YahooFinanceApi/YahooSession.cs +++ b/YahooFinanceApi/YahooSession.cs @@ -15,6 +15,16 @@ internal static class YahooSession private static FlurlCookie _cookie; private static SemaphoreSlim _semaphore = new SemaphoreSlim(1, 1); + /// + /// The user agent key for HTTP Header + /// + public const string UserAgentKey = "User-Agent"; + + /// + /// The user agent value for HTTP Header + /// + public const string UserAgentValue = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"; + /// /// Gets or sets the auth crumb. /// @@ -58,14 +68,11 @@ public static async Task InitAsync(CancellationToken token = default) await _semaphore.WaitAsync(token).ConfigureAwait(false); try { - const string userAgentKey = "User-Agent"; - const string userAgentValue = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"; - var response = await "https://fc.yahoo.com" .AllowHttpStatus("404") .AllowHttpStatus("500") .AllowHttpStatus("502") - .WithHeader(userAgentKey, userAgentValue) + .WithHeader(UserAgentKey, UserAgentValue) .GetAsync() .ConfigureAwait(false); @@ -81,7 +88,7 @@ public static async Task InitAsync(CancellationToken token = default) _crumb = await "https://query1.finance.yahoo.com/v1/test/getcrumb" .WithCookie(_cookie.Name, _cookie.Value) - .WithHeader(userAgentKey, userAgentValue) + .WithHeader(UserAgentKey, UserAgentValue) .GetAsync(token) .ReceiveString();