无法使用请求登录表单

时间:2017-12-26 20:28:45

标签: python python-3.x http request

我认为我所做的一切都正确但脚本不能以简单的形式登录。

登录后,我使用get方法尝试,如果我可以看到用户面板,但我总是记录页面的索引,好像没有记录

用户和密码输入都很顺利。

有些想法吗?

 import requests

 url = 'http://streamcloud.eu/login.html'
 headers = {'User-Agent': 'Mozilla/5.0'}

 payload = {
    'login':'my_login',
    'password':'my_password'
 }

 r = requests.session()
 r.get(url)
 login = r.post(url,data=payload,headers=headers)
 result = r.get('http://streamcloud.eu/?op=my_account')

 print(result.text)

2 个答案:

答案 0 :(得分:0)

在r.post(...)之后(r.headers [' Set-Cookie']) 你会得到一个cookie,所以我想你必须在r.get(...)

上传递那个cookie

答案 1 :(得分:0)

你需要&#34;发布&#34;您的表单数据到http://streamcloud.eu/。另外传递一个名为op的附加参数,其值为login,表示您要登录。所有这些都可以通过快速查看目标网站的html来找到:< / p>

<form method="POST" action="http://streamcloud.eu/" class="proform" name="FL">
   <input type="hidden" name="op" value="login">
   <input type="hidden" name="redirect" value="http://streamcloud.eu/">
   <input type="hidden" name="rand" value="">
   <p>
      <label>Benutzername:</label>
      <input type="text" style="font-style: normal;" name="login" value="my_login" class="text_field">
   </p>
   <div class="clear"></div>
   <p>
      <label>Passwort:</label>
      <input type="password" style="font-style: normal;" name="password" class="text_field">
   </p>
   <div class="clear"></div>
   <div class="clear"></div>
   <br>
   <div>
      <input type="submit" class="button blue medium" value="Senden">
   </div>
   <div class="clear"></div>
</form>

正如您所见,表单会将其信息发布到http://streamcloud.eu/

<form method="POST" action="http://streamcloud.eu/" class="proform" name="FL">

您可以在此处看到隐藏的op参数:

<input type="hidden" name="op" value="login">

以下是更新后的代码:

import requests

url = 'http://streamcloud.eu'
headers = {'User-Agent': 'Mozilla/5.0'}

payload = {
    'op': 'login',
    'login': 'my_login',
    'password': 'my_password'
}

r = requests.session()
r.get(url)
login = r.post(url, data=payload, headers=headers)
result = r.get('http://streamcloud.eu/?op=my_account')

print(result.text)