2014-02-05 2 views
2

Мне удалось пройти форму входа в систему на веб-сайте, используя параметры wget и -post-data и -save-cookies.wget: получить информацию о поле перед отправкой данных

Теперь я пытаюсь заполнить некоторые поля веб-страницы и сделать подачу. Проблема заключается в том, что на веб-странице есть скрытое поле «turing», которое является разным значением каждый раз.

То, что я пробовал, - это открыть веб-страницу, загрузив мои файлы cookie и получить значение turing. Затем сделайте еще один wget с -post-данными и поместите все мои поля туда, включая поле turing. Но это не сработает.

Кроме того, на веб-странице есть несколько форм, поэтому, я думаю, мне нужно добавить имя формы. верный?

Любые идеи?

<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

есть --save-cookies и -load-cookies, по первому запросу вы получаете файлы cookie, или, возможно, вам следует использовать оба флага для сохранения и отправки ваших файлов cookie на сервер ... попробуйте с ними обоими. – Marcel

+0

Осторожно с жадным квантификатором '*', _sed_ может захватить больше, чем вы рассчитывали. Попробуйте: 'value =" \ ([^ "] * \)" ' –

ответ

0

Первый wget должен использовать --save-cookies.

Получаете ли вы что-нибудь вообще в файле cookie.txt в вашем примере?

0

Кажется, моя информация действительно работала. Я просто не предоставил достаточно полей для веб-страницы.

Смежные вопросы