Получить информацию AJAX (XHR) с динамического сайта на C # - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь создать приложение, использующее C #, для получения информации об ограничении данных с моего интернет-провайдера. Страница эта , но я подозреваю, что к ней нельзя получить доступ из-за пределов их сети, поэтому, если кому-то нужна дополнительная информация, просто спросите.

Страница загружает через AJAX оставшуюся квоту трафика и отображает ее на странице после загрузки. Прямо сейчас у меня уже есть работающее приложение, использующее HtmlAgilityPack, но оно довольно отвратительно, учитывая, что я использую элемент управления WebBrowser для загрузки страницы в фоновом режиме, подождите пять секунд, проанализируйте HTML-код страницы с библиотекой и посмотрите, найдет ли она нужную строку HTML. ; если нет, таймер сбрасывается и повторяется до тех пор, пока javascript не выполнит свою задачу и не загрузит информацию об ограничении данных.

Я хочу каким-то образом повторить действия веб-страницы, вызвать сервер и запросить информацию напрямую, не создавая экземпляр веб-браузера в фоновом режиме и не ожидая загрузки информации.

Возможно ли это?

URL http://internet.tre.it/calls/checkMSISDN.aspx?g=2518607185932962118&h=UItDOr88/CtwONsfqfLgblVuTAysHYKc3kh6mLgiX0He49TU0I9lc56O8mWVhxzd3yFUDFF08P/Ng/5cg2nLtefFfjUIBq/QNQalmmSnKkQ=&mc=22299&acid=0&_=1541582209456

Headers

Host: internet.tre.it
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Accept: application/json, text/javascript, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://internet.tre.it/
X-Requested-With: XMLHttpRequest
DNT: 1
Connection: keep-alive
Cookie: cookiesAccepted=1; _iub_cs-160673=%7B%22id%22%3A160673%2C%22consent%22%3Atrue%2C%22timestamp%22%3A%222018-04-16T15%3A42%3A10.978Z%22%2C%22version%22%3A%220.13.22%22%7D; ASP.NET_SessionId=n2wz2brfaepfj2klo0nqfwaw; pageVisit=c73074b54dbe40d49a715aeb9a0f4ea8; 148162__148162_d32646f682e342dba303540b0f10dac1=1

Ответ

Альбом ответа JSON. (я заштриховал эти две строки, потому что они были соответственно моим собственным именем и моим номером телефона)

1 Ответ

0 голосов
/ 08 ноября 2018

Ответом является строка json, я рекомендую следующее:

  • Введите код для загрузки строки json с URL. Смотри например https://stackoverflow.com/a/11891101/4180382
  • Скопируйте всю строку json из вкладки ответа F12
  • В Visual Studio создайте новый файл класса
  • Нажмите Правка> Специальная вставка> Вставить Json как классы.
  • В вашем коде вам понадобится имя первого класса, который вы вставили. Это родительский класс всех классов ниже. Я бы сказал, что это «Баннеры», но подтвердите.
  • var obj = JsonConvert.DeserializeObject < Banners>(downloadedJson);
  • Теперь вы можете перебирать массив меню, чтобы извлечь всю необходимую вам информацию.

И все готово! Если вся информация находится в json, нет необходимости использовать HtmlAgilityPack. Дайте мне знать, как вы поживаете.

...