using System.Net; namespace YandexMusic.API.Common; /// /// Фабрика для создания стандартного HttpClient с поддержкой кук, прокси и автоматической декомпрессией. /// public static class YandexMusicHttpClientFactory { /// /// Создаёт стандартный HttpClient с автоматическим управлением куками. /// /// Прокси-сервер (опционально). /// Таймаут запросов (по умолчанию 30 секунд). /// User-Agent (по умолчанию как у браузера Chrome). /// Настроенный HttpClient. public static HttpClient CreateDefault( CookieContainer? cookieContainer = null, IWebProxy? proxy = null, TimeSpan? timeout = null, string? userAgent = null) { var handler = new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate, UseCookies = true, CookieContainer = cookieContainer ?? new CookieContainer(), AllowAutoRedirect = true, MaxAutomaticRedirections = 10, Proxy = proxy, UseProxy = proxy != null }; var client = new HttpClient(handler, disposeHandler: true) { Timeout = timeout ?? TimeSpan.FromSeconds(30) }; // Стандартный User-Agent, похожий на браузерный client.DefaultRequestHeaders.Add("User-Agent", userAgent ?? "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"); client.DefaultRequestHeaders.Add("Accept", "*/*"); client.DefaultRequestHeaders.Add("Accept-Language", "ru-RU,ru;q=0.9,en;q=0.8"); return client; } }