The point is to make an xhr request that will download a list of groups from the site, like what a browser does
Network tab in firefox browser
static private readonly Regex _code = new(@"request\.setRequestHeader\('X-CS-ID', '(?<code>[\w\d]+)'\);");static private readonly string _linkGroupList = "https://www.asu.ru/timetable/students/";static private HttpClient _httpClient = new();static async Task Main(string[] args){ HttpRequestMessage messenge = new HttpRequestMessage(HttpMethod.Get, _linkGroupList +"12/"); messenge.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"); messenge.Headers.Add("Accept-Language", "ru-RU,ru;q=0.9"); messenge.Headers.Add("Upgrade-Insecure-Requests", "1"); messenge.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"); messenge.Headers.Add("sec-ch-ua", "\"Not;A=Brand\";v=\"24\", \"Chromium\";v=\"128\""); messenge.Headers.Add("sec-ch-ua-mobile", "?0"); messenge.Headers.Add("sec-ch-ua-platform", "\"Windows\""); HttpResponseMessage mes = await _httpClient.SendAsync(messenge); string html = await mes.Content.ReadAsStringAsync(); string code = _code.Match(html).Groups["code"].Value; Console.WriteLine(code); messenge = new HttpRequestMessage(HttpMethod.Get, _linkGroupList +"12/"); messenge.Headers.Add("Accept", "*/*"); messenge.Headers.Add("Accept-Language", "ru-RU,ru;q=0.9"); messenge.Headers.Add("Cookie", "..."); messenge.Headers.Add("Referer", "https://www.asu.ru/timetable/students/12/"); messenge.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"); messenge.Headers.Add("X-CS-ID", code); messenge.Headers.Add("sec-ch-ua", "\"Not;A=Brand\";v=\"24\", \"Chromium\";v=\"128\""); messenge.Headers.Add("sec-ch-ua-mobile", "?0"); messenge.Headers.Add("sec-ch-ua-platform", "\"Windows\""); mes = await _httpClient.SendAsync(messenge); mes.EnsureSuccessStatusCode(); foreach(var i in mes.Headers) { Console.WriteLine($"{i.Key} : {string.Join("; ",i.Value)}"); } string res = await mes.Content.ReadAsStringAsync(); Console.WriteLine(res);}
res is empty...
I tried to build different variations of headings, including through Postman