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

Retrieve AJAX (XHR) infos from a dynamic website in C#

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

页面加载通过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

回应

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

响应是一个 json 字符串,我推荐如下:

  • 编写代码从 URL 下载 json 字符串。参见实例
  • 从您的 F12 响应选项卡复制整个 json 字符串
  • 在 Visual Studio 中创建一个新的 class 文件
  • 单击“编辑”>“选择性粘贴”>“将 Json 粘贴为 classes.
  • 在您的代码中,您需要粘贴第一个 class 的名称。它是父级 class。我会说它是 'Banners',但请验证。
  • var obj = JsonConvert.DeserializeObject < Banners>(downloadedJson);
  • 现在您可以遍历菜单数组来提取您需要的所有信息。

大功告成!如果所有信息都在 json 中,则无需使用 HtmlAgilityPack。让我知道你过得怎么样。