从C#中的动态网站检索AJAX(XHR)信息

时间:2018-11-07 09:19:52

标签: c# ajax xmlhttprequest html-agility-pack

我正在尝试使用C#创建一个应用程序,以从我的ISP站点检索我的数据上限信息。该页面为this one,但我怀疑无法从其网络外部访问该页面,因此如果有人需要更多信息,请询问。

页面通过AJAX加载剩余的流量配额,并在加载后显示在页面中。现在我已经有一个使用HtmlAgilityPack的应用程序,但是考虑到我正在使用WebBrowser控件在后台加载页面,等待五秒钟,使用库解析页面的HTML,看看它是否找到了必要的HTML字符串,这真是令人毛骨悚然。 ;如果不是,计时器将重置并重复自身,直到javascript完成其工作并加载数据上限信息为止。

我想以某种方式复制网页的功能,然后调用服务器并直接询问信息,而无需在后台创建Web浏览器实例并等待信息加载。

有可能吗?

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

标题

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

回复

Album of the JSON response.(我将这两行涂黑,因为它们分别是我自己的名字和我的电话号码)

1 个答案:

答案 0 :(得分:0)

响应是一个json字符串,我建议以下内容:

  • 编写代码以从URL下载json字符串。例如看 https://stackoverflow.com/a/11891101/4180382
  • 从F12响应标签复制整个json字符串
  • 在Visual Studio中创建一个新的类文件
  • 单击“编辑”>“选择性粘贴”>“将Json粘贴”作为类。
  • 在您的代码中,您将需要粘贴的第一类的名称。它是下面所有类的父类。我会说这是“横幅广告”,但请确认。
  • var obj = JsonConvert.DeserializeObject < Banners>(downloadedJson);
  • 现在,您可以遍历Menu数组以提取所需的所有信息。

您完成了!如果所有信息都在json中,则无需使用HtmlAgilityPack。让我知道你的票价。