Метод HttpContent.ReadAsStringAsync() возвращает недопустимый HTML-код. Как это может быть?

#c# #html #dotnet-httpclient #httpcontent

#c# #HTML #dotnet-httpclient #httpcontent

Вопрос:

Вот некоторый код для запроса html-кода из url.

 var currentUrl = "https://www.google.com";
HttpClient client = new HttpClient();
System.Diagnostics.Process.Start(currentUrl); //here i open a browser with same URL, 
var response = await client.GetAsync(currentUrl);
string sourse = null;


if (response != null amp;amp; response.StatusCode == HttpStatusCode.OK)
{
     sourse =await response.Content.ReadAsStringAsync(); // here i get the html-code
}
  

ИТАК, вопросы: почему html-код, который я получаю из программы, и html-код с реальной страницы в браузере, которую я открывал несколько секунд назад, отличаются? Это не имеет смысла.

Кроме того, вот несколько доказательств. Первое изображение — количество символов в браузере-html-код введите описание изображения здесь

… а в программе-html-код введите описание изображения здесь

Я привел простейшее доказательство, чтобы упростить вопрос. Но если копнуть глубже, html-код берется из ниоткуда. Когда я разбираю определенную страницу, и на ней должно быть 39 товаров, программа возвращает html-код, в котором всего 6 товаров (которые, кстати, не входят в число 39 тех, что фактически есть на странице в браузере). Итак, я задал вопрос так просто. Действительно, минуту назад я создал новый проект с этим кодом, и он работает некорректно, как я писал выше. чтобы получить код, который возвращает программа, я могу посмотреть его в переменной sourse или оставить его в файле, а затем сравнить. Нравится:

         FileStream fs = new FileStream("report.txt", FileMode.OpenOrCreate);
        StreamWriter SW = new StreamWriter(fs);
        SW.WriteLine(sourse);
  

Комментарии:

1. Что заставляет вас думать, что это недопустимо? Как вы можете определить? И вы учитывали, что ваш браузер может предоставлять намного больше HTTP-заголовков, когда он отправляет запрос GET в Google, чем ваш HttpClient?

2. HttpClient не является браузером. Браузер загрузит страницу, отобразит ее и запустит в ней скрипты, HttpClient этого делать не будет.

3. Хммм, хорошо. Но как я могу загрузить страницу, как в браузере, и получить правильный HTML-код?

4. @MisterCrabs Вы смотрите на элементы управления браузером, такие cefsharp.github.io или веб-браузер .Net Framework. Независимо от того, что вы выберете, вы должны проверить свою цель. Почему вы получаете HTML-код?