c# xNet как дождаться прогрузки js скриптов?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Sn00pY, 13 Aug 2018.

  1. Sn00pY

    Sn00pY New Member

    Joined:
    30 Sep 2017
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Есть сайт, на котором записываются некоторые куки, но записываются они только после выполнения всех js скриптов, которые выполняются ajax методом. Делаю GET запрос через HttpRequest, но куки остаются пустые и многие элементы в полученном коде отсутствуют. Все это из-за того что мне возвращается страница без выполненных js скриптов. Как можно дождаться их выполнения и вернуть ответ используя xNet. Или какими-либо другими способами. Думал заюзать WebBrowser, но, на сколько я знаю, он работает посредством IE, так что записать и получить из него куки будет проблематично. Сам факт в том, что в js скриптах, выполняемых на сайте, я не нашел записи куки, но после полной прогрузки страницы куки записываются, поэтому подделать их тоже не представляется возможным.
     
  2. Ciri

    Ciri New Member

    Joined:
    28 Dec 2018
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    Все дело в том, что xNet - не браузерный движок, и он не может выполнять javascript-сценарии.
    Он создан лишь для того, чтобы отправлять HTTP-запросы, переходить по-редиректам, и цеплять только те куки, которые отдает сервер.

    Вы можете попробовать отправлять вручную те ajax-запросы, и цеплять куки с них.
    чтобы это сделать, вам, скорее всего, нужно будет спарсить какие-то переменные, валяющиеся в ответе одного из запросов.
    если же вы не сможете найти эти параметры, значит, вероятно, они генерируются средством javascript, и это уже сложнее: в таком случае нужно копаться в тех скриптах, и пытаться собрать аналогиную генерацию, или прогнать скрипт через javascript-библиотеку вроде Noesis.Javascript. (ссылка: nuget)

    Либо используйте браузерные движки вроде selenium-а, но это очень ресурсзатратно.