2017-08-08 31 views
0

網站有一個由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(&quot;ctl00$ContentPlaceHolder2$btnSearch&quot;, 
&quot;&quot;, true, &quot;CriteriaGroup&quot;, &quot;&quot;, 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語法。仍然需要查看發佈數據的內容。

+0

我會建議使用無頭瀏覽器,像[PhantomJS](後清零http://phantomjs.org/)。這是更方便,也執行JavaScript。 – lumio

+0

謝謝,但我們不知道JavaScript。 – Obex

回答

0

您可以使用Chrome開發人員工具爲您獲取該請求。轉到網絡選項卡並確保啓用日誌記錄功能,而不是在網頁上提交表單,它應該在那裏記錄(可能)POST請求。右鍵點擊複製 - >爲捲曲:

copy as curl

如果網絡窗格中提交您可能需要啓用Preserve log複選框

+0

謝謝,從來沒有想過在這種情況下的r點擊。 – Obex

0

當您使用JavaScript提交表單時,使用Chrome(或Safari或Firefox)Web檢查器檢查提交給服務器的值。一旦你看到了,你就可以將它複製到腳本中。