Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 HTTP请求登录无法处理我提供的表单数据_Python_Python 3.x_Python Requests - Fatal编程技术网

Python HTTP请求登录无法处理我提供的表单数据

Python HTTP请求登录无法处理我提供的表单数据,python,python-3.x,python-requests,Python,Python 3.x,Python Requests,注意:这不是重复的。这是我第二次发布这篇文章,因为它被认为是重复的,但是其他的回复并不能解决我的特殊问题。在更正我原来/以前的帖子以反映这一点后,它仍然关闭。所以,我在这里再次提出同样的问题,因为另一个问题立即关闭了。请仔细阅读并尽量理解我的问题,然后再将其标记为重复或关闭 我正试图登录一个URL为“”的网站,但很难进入。我一直在使用下面的代码来尝试这一点,但是当打印页面内容时,我得到的只是没有实际登录的页面 #!/usr/bin/env python3 import requests wit

注意:这不是重复的。这是我第二次发布这篇文章,因为它被认为是重复的,但是其他的回复并不能解决我的特殊问题。在更正我原来/以前的帖子以反映这一点后,它仍然关闭。所以,我在这里再次提出同样的问题,因为另一个问题立即关闭了。请仔细阅读并尽量理解我的问题,然后再将其标记为重复或关闭

我正试图登录一个URL为“”的网站,但很难进入。我一直在使用下面的代码来尝试这一点,但是当打印页面内容时,我得到的只是没有实际登录的页面

#!/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)
成功登录后,登录页应为“”,您可以从我的
page=c.get('https://wedgfl.aquahawk.us/)
我的部分代码。我想可能是我的饼干出了问题,但即使禁用/注释它也有同样的效果。如果您想知道,我确实在使用Python3

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

<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
import requests

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

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

我可能从表单数据中获取了错误的值键,或者我需要从表单数据中获取更多信息,以便登录此页面?

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

import requests
import json

session = requests.Session()

loginUrl = "https://wedgfl.aquahawk.us/login"
loginHeaders = {
        "Host": "wedgfl.aquahawk.us",
        "Connection: keep-alive",
        "Accept": "application/json",
        "Origin": "https://wedgfl.aquahawk.us",
        "X-Requested-With": "XMLHttpRequest",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36",
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        "Referer": "https://wedgfl.aquahawk.us/login",
        "Accept-Encoding": "gzip, deflate, br",
        "Accept-Language": "en-US,en;q=0.9",
}

loginData = {
    "username":"myemail@domain.tld",
    "password":"MySecretPassword"

}

#Data is posted as Json Data using json.dumps
loginResponse = session.post(loginUrl, data=json.dumps(loginData), headers=loginHeaders)
#If the above does not work try without json.dumps
loginResponse = session.post(loginUrl, data=loginData, headers=loginHeaders)
print(loginResponse)   #should print 200

#check if logged in 

verify = session.get("https://wedgfl.aquahawk.us/")
print(verify.text)

如果您认为问题被错误地关闭了,那么有一个适当的流程可以重新打开这些问题。重新提出这个问题不是这个过程的一部分。请看,我得到了同样的结果。我想我知道问题是什么。一旦我登录,它似乎会为整个页面呈现某种类型的flash页面或某种动画格式,这样做可能无法读取,因此它总是会回吐主页的格式…叹气:(.您的答案确实有效,因为我在另一个页面上尝试了它。在此之前,我甚至无法让我的代码在另一个页面上工作。所以感谢您的帮助!为什么json格式可以工作,而不是我的工作方式?因为网站服务器配置为接受json格式的数据,正如您在标题中所看到的:
accept:application/json
,您可以使用chrome网络选项卡查看请求,检查浏览器发送到服务器的标题。