Simulating Javascript 'doPostBack()' in C#

本文关键字:in Simulating doPostBack Javascript | 更新日期: 2023-09-27 18:15:54

我正在为我的公司写一个网页阅读器。我们的客户允许我们为此访问他们的网站,但是我们客户的IT团队没有与我们沟通,所以我不得不在没有来源帮助的情况下做这个程序。

他们的网站在所有按钮/下拉菜单上使用javascript将postData发送到服务器,以便屏幕将更新以向最终用户显示正确的信息。

我正试图让我的程序模拟点击"下一页"。"下一页"按钮有一个onclick事件,其内容如下:

onclick="javascript:WebForm_DoPostBackWithOptions(
new WebForm_PostBackOptions("ctl00$ContentPlaceHolder1$ucTaxQueueListView$lviewOrderQueue$DataPager2$ctl00$btnNextPage"
, "", true, "", "", false, false))"    

在我的c#程序中,我使用HTTPWebRequest类和HTMLAgilityPack分别做我的请求/报废。

我已经在我的代码中做了所有我能做的,试图让这个工作。唯一有效的方法是使用Fiddler复制postData并将其逐字粘贴到我的WebRequest函数中。这是非常不切实际的,当我有可能去1000多个"下一页"。

我也试过从页面中提取ViewState并使用它,但这总是给我一个"错误"页面。

任何帮助或指导都将受到赞赏,甚至补偿…我老板要求这个项目在周末完成!!

Simulating Javascript 'doPostBack()' in C#

上次我不得不做一个类似的项目时,我采用了一种非常不同的方法。

我使用了GreaseMonkey——尽管你也可以使用Windows HTA文件来达到同样的效果——

我让GreaseMonkey脚本运行并逐个遍历页面。要处理DoPostBack,我只需在适当的元素上调用click处理程序。

我有几个数据存储正在运行。

一个数据存储包含了我"点击"的每个菜单项,以避免重复。

另一个数据存储是页面的原始HTML(由body.innerHTML获取)

一旦我克隆了所有的页面,我写了另一个GreaseMonkey脚本来加载每个保存的页面并从中挖掘我需要的任何信息。我建立了第三个资源数据存储(图像和CSS),然后将它们与一个大文本文件一起放到CuRL中。