Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带请求的Python post cookie_Python_Ssl_Cookies_Python Requests - Fatal编程技术网

带请求的Python post cookie

带请求的Python post cookie,python,ssl,cookies,python-requests,Python,Ssl,Cookies,Python Requests,这是我的登录页面(是Elastix PBX) 我想用无头浏览器登录以检索报告 不管我试过多少种变体 我仍然无法访问 对于我以前的PBX,它不使用SSL,这是一项简单的任务 但我不知道如何使用SSL实现这一点 这是我的Python代码: import requests payload = {'input_user': 'admin', 'input_pass': 'pass', 'action':'submit_login'} r1 = requests.post('https://10.8.

这是我的登录页面(是Elastix PBX) 我想用无头浏览器登录以检索报告

不管我试过多少种变体 我仍然无法访问

对于我以前的PBX,它不使用SSL,这是一项简单的任务 但我不知道如何使用SSL实现这一点

这是我的Python代码:

import requests

payload = {'input_user': 'admin', 'input_pass': 'pass', 'action':'submit_login'}

r1 = requests.post('https://10.8.20.3/index.php', data=payload, verify=False)
r2 = requests.post('https://10.8.20.3/index.php', cookies=r1.cookies, verify=False)

print r2.text
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Elastix - Login page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <!--<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">-->
    <link rel="stylesheet" href="themes/elastixneo/login_styles.css">
    <script type='text/javascript' src='libs/js/jquery/jquery-1.8.3.min.js'></script>
<script type='text/javascript' src='libs/js/jquery/jquery-ui-1.8.24.custom.min.js'></script>
<script type='text/javascript' src='libs/js/jquery/jquery-upl-blockUI.js'></script>
<script type='text/javascript' src='libs/js/jquery/jquery-upl-colResizable-1.3.min.js'></script>
<script type='text/javascript' src='libs/js/jquery/jquery-upl-colorpicker.js'></script>
<script type='text/javascript' src='libs/js/jquery/jquery-upl-easing.1.3.js'></script>
<link rel='stylesheet' href='libs/js/jquery/widgetcss/colorpicker.css' />
<link rel='stylesheet' href='libs/js/jquery/css/redmond/jquery-ui-1.8.24.custom.css' />
  </head>
  <body>
    <form method="POST">
      <div id="neo-login-box">
        <div id="neo-login-logo">
          <img src="themes/elastixneo/images/elastix_logo_mini.png" width="200" height="62" alt="elastix logo" />
        </div>
        <div class="neo-login-line">
          <div class="neo-login-label">Username:</div>
          <div class="neo-login-inputbox"><input type="text" id="input_user" name="input_user" class="neo-login-input" /></div>
        </div>
        <div class="neo-login-line">
          <div class="neo-login-label">Password:</div>
          <div class="neo-login-inputbox"><input type="password" name="input_pass" class="neo-login-input" /></div>
        </div>
        <div class="neo-login-line">
          <div class="neo-login-label"></div>
          <div class="neo-login-inputbox"><input type="submit" name="submit_login" value="Submit" class="neo-login-submit" /></div>
        </div>
        <div class="neo-footernote"><a href="http://www.elastix.org" style="text-decoration: none;" target='_blank'>Elastix</a> is licensed under <a href="http://www.opensource.org/licenses/gpl-license.php" style="text-decoration: none;" target='_blank'>GPL</a> by <a href="http://www.palosanto.com" style="text-decoration: none;" target='_blank'>PaloSanto Solutions</a>. 2006 - 2015.</div>
        <br>

        <script type="text/javascript">
            $(document).ready(function() {
                 $("#neo-login-box").draggable();
            });
            document.getElementById("input_user").focus();
        </script>

      </div>
    </form>
  </body>
</html>
打印r2.text时,我希望看到我的受限页面 但我实际上得到了相同的登录页面

这是我的HTML登录页面:

import requests

payload = {'input_user': 'admin', 'input_pass': 'pass', 'action':'submit_login'}

r1 = requests.post('https://10.8.20.3/index.php', data=payload, verify=False)
r2 = requests.post('https://10.8.20.3/index.php', cookies=r1.cookies, verify=False)

print r2.text
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Elastix - Login page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <!--<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">-->
    <link rel="stylesheet" href="themes/elastixneo/login_styles.css">
    <script type='text/javascript' src='libs/js/jquery/jquery-1.8.3.min.js'></script>
<script type='text/javascript' src='libs/js/jquery/jquery-ui-1.8.24.custom.min.js'></script>
<script type='text/javascript' src='libs/js/jquery/jquery-upl-blockUI.js'></script>
<script type='text/javascript' src='libs/js/jquery/jquery-upl-colResizable-1.3.min.js'></script>
<script type='text/javascript' src='libs/js/jquery/jquery-upl-colorpicker.js'></script>
<script type='text/javascript' src='libs/js/jquery/jquery-upl-easing.1.3.js'></script>
<link rel='stylesheet' href='libs/js/jquery/widgetcss/colorpicker.css' />
<link rel='stylesheet' href='libs/js/jquery/css/redmond/jquery-ui-1.8.24.custom.css' />
  </head>
  <body>
    <form method="POST">
      <div id="neo-login-box">
        <div id="neo-login-logo">
          <img src="themes/elastixneo/images/elastix_logo_mini.png" width="200" height="62" alt="elastix logo" />
        </div>
        <div class="neo-login-line">
          <div class="neo-login-label">Username:</div>
          <div class="neo-login-inputbox"><input type="text" id="input_user" name="input_user" class="neo-login-input" /></div>
        </div>
        <div class="neo-login-line">
          <div class="neo-login-label">Password:</div>
          <div class="neo-login-inputbox"><input type="password" name="input_pass" class="neo-login-input" /></div>
        </div>
        <div class="neo-login-line">
          <div class="neo-login-label"></div>
          <div class="neo-login-inputbox"><input type="submit" name="submit_login" value="Submit" class="neo-login-submit" /></div>
        </div>
        <div class="neo-footernote"><a href="http://www.elastix.org" style="text-decoration: none;" target='_blank'>Elastix</a> is licensed under <a href="http://www.opensource.org/licenses/gpl-license.php" style="text-decoration: none;" target='_blank'>GPL</a> by <a href="http://www.palosanto.com" style="text-decoration: none;" target='_blank'>PaloSanto Solutions</a>. 2006 - 2015.</div>
        <br>

        <script type="text/javascript">
            $(document).ready(function() {
                 $("#neo-login-box").draggable();
            });
            document.getElementById("input_user").focus();
        </script>

      </div>
    </form>
  </body>
</html>

Elastix-登录页面
用户名:
密码:
根据的许可。2006 - 2015.

$(文档).ready(函数(){ $(“#neo登录框”).draggable(); }); document.getElementById(“输入用户”).focus();
第二个
POST
不会将任何数据发布到服务器,第一个
POST
可能是
GET

此外,请尝试在会话中使第一个请求成为
GET
,然后使用登录凭据执行
POST
。使用会话消除了显式管理cookie的需要

import requests

url = 'https://10.8.20.3/index.php'
payload = {'input_user': 'admin', 'input_pass': 'pass', 'action':'submit_login'}

s = requests.session()
r = s.get(url, verify=False)
r = s.post(url, data=payload, verify=False)

print r.text

我不确定您是否需要设置
verify=False
;如果我的建议有效,您可以尝试删除它。

我猜这些页面需要Javascript。请求只实现一个非常基本的HTTP客户端,不提供Javascript。分配r1时服务器的响应是什么?它不起作用,为什么要覆盖r?首先将r分配给s.get,然后用s.postAnd about verify=False覆盖它,因为本地服务器使用的是自签名SSL证书,我强制它忽略它,而不是验证证书。@Y.Eliash:对于SSL,我只是不确定您是否认为SSL与问题有关,所以在自签名证书的情况下,是,设置
verify=False
。覆盖
r
并不重要,重要的是
POST
的响应。最初的
GET
是初始化任何来自服务器的cookie,并将它们存储在会话中。您可以检查来自初始
GET
的响应,以查看您得到的HTTP响应。同样地,对于
POST
。。。现在可以了!禁用SSL(HTTPS)后,我交换了POST/GET(第一次POST用于登录,然后GET用于数据提取),代码正常工作-非常感谢!