HTTP请求登录无法使用我提供的表单数据

时间:2017-12-15 18:14:25

标签: python python-3.x python-requests

注意:这是重复。这是我第二次发布这个帖子,因为它被认为是重复的,但其他答案并没有解决我的特定问题。在纠正我的原始/上一篇文章以反映这一点后,它仍然保持关闭状态。所以,在这里,我再次提出同样的问题,因为另一个问题立即关闭了。请完整阅读,并在将其标记为重复或关闭之前尝试了解我的问题。

我正在尝试登录其网址为" https://wedgfl.aquahawk.us/login"但是我很难进入。我一直在使用以下代码来尝试这一点,但是在打印页面内容时,我得到的只是没有实际登录的页面。

#!/usr/bin/env python3
import requests

with requests.Session() as c:
    url = 'https://wedgfl.aquahawk.us/login'
    USERNAME = 'myemail@domain.tld'
    PASSWORD = 'MySecretPassword'
    c.get(url)
    #cookie = c.cookies['connect.sid']
    login_data = dict(username=USERNAME, password=PASSWORD, next='/')
    c.post(url, data=login_data, headers={"Referer": "https://wedgfl.aquahawk.us/login"})
    page = c.get('https://wedgfl.aquahawk.us/')
    print(page.content)

登录成功后,目标网页应为" https://wedgfl.aquahawk.us"正如您从我的page = c.get('https://wedgfl.aquahawk.us/')部分代码中看到的那样。我想也许这与我的cookie有关,但即使禁用/评论也有同样的效果。万一你想知道,我确实在使用Python 3

我确实从页面源中提取了我需要的表单数据。也许我的问题是我没有从表单数据中调用正确的密钥信息?以下是登录后查看页面源时的信息:

<form id="userAuth" action="/login" method="POST" style="display: none">
  <div id="userAuthUserNameSubtitle" class="x-hidden">User Name or Email:</div>
  <input id="userAuthUserName" type="text" name="username" spellcheck="false" class="x-hidden">
  <div id="userAuthPasswordSubtitle" class="x-hidden">Password:</div>
  <input id="userAuthPassword" type="password" name="password" class="x-hidden">
  <input id="userAuthSubmit" type="submit" value="Sign In" class="x-hidden">
</form>

我已经尝试过这种方式,只是为了验证我是否实际登录但仍然有相同的结果:

import requests

payload = {
    'username': 'myemail@domain.tld',
    'password': 'MySecretPassword'
}

import sys

with requests.Session() as c:
    c.post('https://wedgfl.aquahawk.us/login', data=payload)
    r = c.get('https://wedgfl.aquahawk.us/')
    print "Something from the page that only shows after login" in r.content

我甚至按照this post中的示例来获得相同的结果:

import requests

url = 'https://wedgfl.aquahawk.us/login'
values = {'username': 'myemail@domain.tld',
        'password': 'MySecretPassword'}

r = requests.post(url, data=values)
print(r.content)

我要么从表单数据中获取错误的值键,要么我的代码中需要更多信息来自此页面需要的表单数据才能登录?

1 个答案:

答案 0 :(得分:1)

检查此解决方案,我添加了正确的标题

{{1}}