2014-09-11 12 views
1

this site (현재 죽은 링크)에 로그인하려고합니다. 내 사용자 이름과 암호 (이 사이트는 중요하지 않음)를 제공해 사용자가 직접 시도하고 실제로 작동하는지 테스트 할 수 있습니다.원격 웹 사이트에 로그인

이 문제가 있습니다

  1. 방법이 페이지 핸들 CSRF합니까? 쿠키에 저장하지 않습니다. 어떻게 얻었습니까?
  2. 이 코드를 사용하면 HTTP 200을 제공하지만 로그인하지 않습니다. 사용자 이름과 암호로 로그인하고 다음 페이지 HTML을 가져와야합니다.

    import requests 
    >>> url = 'http://dining.ut.ac.ir/login' 
    >>> signin = {'username' : '810192485' , 'password' : '0923122265' , '_csrf_token' : '14e993b708cbe5f8f7b356b6944bff98'} 
    >>> x = requests.post(url, data = signin) 
    >>> x 
    <Response [200]> 
    

로그인 페이지 HTML의 로그인 부분 :

<form action="/login" method="post"> 
    <input type="hidden" name="signin[_csrf_token]" value="14e993b708cbe5f8f7b356b6944bff98" id="signin__csrf_token" />   
     <table id="loginDatagrid"> 
     <tr> 
      <td width="300" align="left" valign="bottom"><label style="position:relative;left:5px;bottom:5px;" for="signin_username">نام‌ کاربري (شماره دانشجویی/پرسنلی) : </label></td> 
      <td width="100" align="right" valign="bottom"><div class="loginboxdiv"><input class="loginbox" type="text" name="signin[username]" id="signin_username" class="text" size="5" onclick='inputSelected("signin_username")'/></div> </td> 
      <td width="45"> &nbsp;</td> 
     </tr> 

     <tr> 
      <td width="300" align="left" valign="top"><label style="position:relative;left:5px;top:5px; "for="signin_password">رمز عبور (کد ملی): </label></td> 
      <td width="100" align="right" valign="top"><div class="loginboxdiv"><input class="loginbox" type="password" name="signin[password]" id="signin_password" class="text" onclick='inputSelected("signin_password")'/> </div> 
      </td> 
      <td width="45" align="right" valign="top"> <input SRC="images/submit_form.jpg" type="image" value="" /> </td> 
     </tr> 
    </table> 

</form > 
+0

'로그인 성공'은 한 번 로그인하면 '리디렉션'에 대한 302 HTTP 코드가됩니다. –

+0

감사합니다. Aron! 그러나 여전히 문제는 남아 있습니다 : D! @AronYsidoro –

+2

u가 게시 된 페이지는 404 – gosom

답변

2

양식이 기대 필드를 게시 아닙니다. HTML에서 볼 수 있듯이 모든 양식 필드는 Rails/PHP 해시 스타일로되어 있습니다. 동일한 형식을 사용해야합니다.

signin = {'signin[username]' : '810192485' , 'signin[password]' : '0923122265' , 'signing[_csrf_token]' :  '14e993b708cbe5f8f7b356b6944bff98'} 
+0

입니다. >>> signin { 'signing [_csrf_token]': '98a38792011d13f46a228854deb43bf4', 'signin [username]': '810192485', 'signin [password]': '0923122265'} >>> x = requests.post (url, data = signin) >>> x <이 또한 작동하지 않습니다. –