2014-02-05 83 views
2

我設法使用wget和--post-data和--save-cookies選項來超越網站的登錄表單。wget:在發送後數據之前獲取字段信息

現在我嘗試填寫網頁的一些字段,然後進行提交。 問題是,網頁上有一個'turing'隱藏字段,每次都是不同的值。

我試過的是打開網頁,加載我的cookies,並獲得圖靈價值。 然後用--post-data做另一個wget,並將所有的字段放在那裏,包括圖靈場。但它不起作用。

此外,網頁上有幾個表單,所以我想我必須添加表單名稱。正確?

任何想法?

<form action="article.php" method="post" name="postmessage"> 
<table width="100%" class="table_lines" border="0" cellspacing="0" cellpadding="6"> 
    <tr> 
    <td>subject</td> 
    <td><input type="text" name="messageinput[0]" value=""></td> 
    </tr> 
    <tr> 
    <td>tags</td> 
    <td><input type="text" name="messageinput[1]" value=""></td> 
    </tr> 
    <tr> 
    <td>Message</td> 
    <td><input type="text" name="messageinput[2]" value=""></td> 
    </tr> 
    <td colspan="2" align="center"><input name="mesbut" type="submit" value="Post Message" onclick="document.postmessage.mesbut.value='Posting..'; document.postmessage.mesbut.disabled=true;document.postmessage.submit();"></td> 
</table> 
<input type="hidden" name="turing" value="wgbyp"> 
</form> 

所以我試圖爲(後登錄):

/usr/bin/wget -q --load-cookies cookie.txt http://www.myurl.com/article.php -O output.html 
TURING=$(sed -n -e 's/.*name="turing" value="\(.*\)">.*/\1/p' output.html) 

/usr/bin/wget -q --load-cookies cookie.txt --post-data "messageinput[0]=mysubject&messageinput[1]=&messageinput[2]=mymessage&turing=${TURING}&postmessage=1&mesbut=1" http://www.myurl.com/article.php -O output2.html 

但它無法正常工作。

+0

嘗試'printf%q「$ TURING」'看看它是否是正確的值。 – l0b0

+0

在收到cookie的第一個請求上有--save-cookies和-load-cookies,或者您應該使用兩個標誌來保存cookie並將其發送到服務器......嘗試使用它們。 – Marcel

+0

小心貪婪的量詞'*',可能會捕捉到比您討價還價更多的東西。試試:'value =「\([^」] * \)「' –

回答

0

第一個wget需要使用--save-cookies。

在你的例子中,你是否在cookie.txt中得到了任何東西?

0

似乎我的信息確實奏效。 我只是沒有提供足夠的網頁字段。