登录远程网站

时间:2014-09-11 22:15:54

标签: python django python-requests

我尝试登录this site(现已死链接)。我提供了我的用户名和密码(这个网站并不重要),以便您可以自己尝试,并测试它是否真的有效。

有两个问题:

  1. 此页面如何处理CSRF?它不会将其保存在任何cookie上。它是怎么得到的?
  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]>
    
  3. 登录页面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 >
    

1 个答案:

答案 0 :(得分:2)

您未发布表单所需的字段。从HTML中可以看出,所有表单字段都是Rails / PHP哈希样式:您需要使用相同的格式。

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