网站有一个由aspx支持的网络表单。我们正在尝试使用bash或perl与wget模仿填写并提交webform。这意味着制作www.thatsite.com/someform.aspx?a=b&c=d
形式的网址,该网址将使网站返回结果,就像我们手动输入数据一样。
webform的提交按钮来源如下所示:
<input type="submit" name="ctl00$ContentPlaceHolder2$btnSearch"
value="Search" onclick="javascript:WebForm_DoPostBackWithOptions(new
WebForm_PostBackOptions("ctl00$ContentPlaceHolder2$btnSearch",
"", true, "CriteriaGroup", "", false,
false))" id="ContentPlaceHolder2_btnSearch" />
在JS控制台中,我们尝试了调用__DoPostBack()的DoPostBackWithOptions():
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
如果在表单中填写了值,则可以使用Chrome开发人员工具中的javascript控制台:
__doPostBack(new
WebForm_PostBackOptions("ctl00$ContentPlaceHolder2$btnSearch",
"", true, "CriteriaGroup", "", false, false).eventTarget, new
WebForm_PostBackOptions("ctl00$ContentPlaceHolder2$btnSearch", "", true,
"CriteriaGroup", "", false, false).eventArgument)
我们无法弄清楚如何准确查看从theForm.submit()
发送回服务器的网址。
编辑:我发现我们需要wget --postdata="a=b&c=d"
,而不是我上面描述的get语法。仍然需要查看帖子数据是什么。