2014-02-05 10 views
2

wget 및 --post-data 및 --save-cookies 옵션을 사용하여 웹 사이트의 로그인 양식을 통과 할 수있었습니다.wget : post-data를 보내기 전에 필드 정보 가져 오기

이제 웹 페이지의 일부 입력란을 채우고 제출을 시도합니다. 문제는 매번 다른 값인 웹 페이지에 '튜링'숨겨진 필드가 있다는 것입니다.

내가 시도한 것은 쿠키가로드 된 상태에서 웹 페이지를 열고 튜링 값을 얻는 것입니다. 그런 다음 --post-data를 사용하여 다른 wget을 수행하고 튜링 필드를 포함하여 모든 필드를 그 안에 넣습니다. 그러나 그것은 효과가 없습니다.

또한 웹 페이지에는 여러 양식이 있으므로 양식 이름을 추가해야합니다. 옳은?

아이디어가 있으십니까?

/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 

그러나이 작동하지 않습니다 : 나는 (로그인 후)입니다 시도 그래서

<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> 

.

+0

올바른 값인지 확인하려면'printf % q "$ TURING"시도해보십시오. – l0b0

+0

거기에 --save-cookies와 --load-cookies가 있습니다. 첫 번째 요청에서 쿠키를 받거나 두 플래그를 모두 사용하여 쿠키를 저장하고 서버로 보내야합니다. 둘 다 시도하십시오. – Marcel

+0

욕심 많은 양 "*'을 조심스럽게 쓰면, _sed_가 당신보다 더 많은 것을 얻을 수 있습니다. 시도해보십시오 :'value = "\ ([^"] * \) "' –

답변

0

첫 번째 wget은 --save-cookies를 사용해야합니다.

예제에서 cookie.txt에 아무 것도 표시되지 않습니까?

0

내 정보가 작동하는 것 같습니다. 웹 페이지에 충분한 필드를 제공하지 않았습니다.