網站有一個由aspx支持的網頁表單。我們正在嘗試使用bget或perl和wget來模擬填寫和提交網絡表單。這意味着要製作一個形式爲www.thatsite.com/someform.aspx?a=b&c=d
的URL,以便讓網站返回結果,就好像我們手動鍵入數據一樣。用wget模仿網頁表單
網絡表單的提交按鈕來源是這樣的:
<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控制檯,我們試圖DoPostBackWithOptions(),它調用__doPostBack():如果數值填寫
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()
確切地查看將哪個URL發送回服務器。
編輯:我知道我們需要wget --postdata="a=b&c=d"
,而不是上面描述的get語法。仍然需要查看發佈數據的內容。
我會建議使用無頭瀏覽器,像[PhantomJS](後清零http://phantomjs.org/)。這是更方便,也執行JavaScript。 – lumio
謝謝,但我們不知道JavaScript。 – Obex