Как парсить страницу, которая загружена в WebView? Android Xamarin

91
11 июня 2021, 09:50

Есть страница (не моя и без API) с которой надо взять данные. Пример такой страницы

https://warthunder.ru/ru/community/userinfo/?nick=Keofox

Нужные данные находятся в таких блоках:

                        <ul class="profile-stat__list-sb">
                        <li class="profile-stat__list-item">СБ</li>
                        <li class="profile-stat__list-item">93</li>
                        <li class="profile-stat__list-item">64</li>
                        <li class="profile-stat__list-item">5</li>

Ранее парсер работал через AngleSharp, но недавно добавили защиту DDoS protection by Cloudflare. Соответственно парсер не работает, трюки с задержкой, паралельной загрузкой в webview успеха не дали.

Единственное возможное решение (на мой взгляд) это вытащить HTML код с уже загруженной страницы в WebView (в WebView страница проходит проверку cloudflare и загружается без проблем). Видел подобные примеры на Джава, но интерпритировать под C# не удалось. Как можно вытащить из WebView HTML код и использовать его?

Answer 1

Спасибо за полезный совет @EvgeniyZ

Надо установить через nuGet библиотеку https://github.com/elcattivo/CloudFlareUtilities

Итоговый код для AngleSharp:

    try
    {
        ClearanceHandler handler = new ClearanceHandler
        {
            MaxRetries = 2 
        };
        HttpClient client = new HttpClient(handler);
        string source = await client.GetStringAsync("https://warthunder.ru/ru/community/userinfo/?nick=Keofox");
        var parser = new HtmlParser(); 
        document = parser.ParseDocument(source);
    }
    catch (AggregateException ex) when (ex.InnerException is CloudFlareClearanceException)
    {
    }
    catch (AggregateException ex) when (ex.InnerException is TaskCanceledException)
    {
    }
READ ALSO
При переносе проекта возникает ошибка System.Runtime.CompilerServices.Unsafe, Version=4.0.4.0

При переносе проекта возникает ошибка System.Runtime.CompilerServices.Unsafe, Version=4.0.4.0

Запускаю проект на другой машине, проект скачан из репозитория, все ссылки работают, связи все правильные, через gacutil добавил несколько сборок,...

89
При билде Android APP Budle сцены не загружаются

При билде Android APP Budle сцены не загружаются

Дело в том что при билде приложения для Play Market нужно билдить его как Android App bundle , но проблема в том , что при таком билде я просто не могу загружать...

80
Делаю игру Ping pong

Делаю игру Ping pong

Создал ракетку для игры:

95
Преобразовать массив на шарпе в json

Преобразовать массив на шарпе в json

У меня есть код на php:

99