0

场景:我有一个内部 ASP.NET 站点,允许我维护一组规则 (CRUD)。要添加新规则,我只需填写 HTML 表单并单击提交。我当前的问题是我现在需要添加几百条规则,并且我想使用脚本来自动执行此操作。

初步计划

  • 创建一个可以接受 X 个参数的脚本,并使用这些参数来伪造上述网页的表单提交
  • 创建一个逗号分隔的文件(或类似文件),每条规则一行,每一列代表 HTML 表单中的输入标签之一
  • 创建另一个脚本,该脚本可以使用逗号分隔文件为每一行执行一次表单提交脚本

我的尝试集中在curl上,并且针对在线测试页面效果很好。不幸的是,我无法让它对 ASP.NET 页面起作用,我猜这与 Postback 和/或 Viewstate 有关系。

片段

curl -s -u "DOMAIN\user:password" --ntlm -d "key1=value1" -d "key2=value2" http://internal/page.aspx

(像使用 GET 一样返回页面,没有错误消息)

问题

如何欺骗我正在发送回发的 ASP页面?(也欢迎其他脚本建议)

编辑

来自 ASP 页面的片段:

<asp:LinkButton ... runat="server" OnClick="lbAddRule_Click" PostBackUrl="~/Page.aspx" />

来自后面代码的片段:

protected void lbAddRule_Click(object sender, EventArgs e) {
  if (Page.IsValid == true) {
    AddRule(x,y,z);
4

2 回答 2

2

采用完全不同的方法,您是否考虑过编写浏览器本身的脚本?有一些非常强大的技术,包括 Selenium/WebDriver [1] 和 iMacros [2],它们都允许这种脚本编写。

[1] http://seleniumhq.org/docs/03_webdriver.html

[2] http://wiki.imacros.net/Browser_Automation

于 2012-05-08T01:36:41.500 回答
1

如果这旨在作为 RESTful 服务(您正在访问它),您可能需要考虑将当前处理表单的页面重写为Web Service。然后,您可以使用 curl 访问您想要的所有内容,并重新连接您的表单,以便一切都像以前一样工作。

于 2012-05-07T17:37:29.337 回答