繁体   English   中英

尽管匹配网络表单数据,但无法使用 requests.post 登录网站

[英]Unable to log into website using requests.post despite matching network form data

我无法使用请求登录网站并获取帐户后面的 API 数据。 请求有效负载数据与用于正常登录的表单数据相匹配。

我的代码如下:

urlpage = 'https://speechanddebate.org/login'

header = {'User-Agent': 'Chrome/84.0.4147.89'}
payload = {'log': "email@gmail.com",
           'pwd': "password",
           'wp-submit': 'Log In',
           'rememberme': 'forever',
           'redirect_to': '/account',
           'testcookie': '1'}
session = requests.Session()
test = session.post(urlpage, headers = header, data = payload)

当我正常登录而不是通过网络抓取时,我使用检查元素来查找通过 POST 发送的数据,当我在网络下检查时它给出了这个结果:

网络形象

与其他 StackOverFlow 答案相比,我不确定我在做什么不同。 这是我尝试进行的代码修改列表:

  • 没有会话,只是做一个正常的请求
  • 使数据 URL 编码
  • 更改它并将with requests.Session() as session:阻止而不是仅session = requests.Session()
  • 并尝试了带有标题和不带标题等的 POST。

当我正常登录时,我得到状态码 302,表示登录成功,我已被转移到另一个 web 页面。 但是,当我通过网络抓取进行操作时,它无法登录并返回状态码 200 并将其返回到登录页面。

尝试

headers = {
    'authority': 'www.speechanddebate.org',
    'cache-control': 'max-age=0',
    'upgrade-insecure-requests': '1',
    'origin': 'https://www.speechanddebate.org',
    'content-type': 'application/x-www-form-urlencoded',
    'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Mobile Safari/537.36',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-user': '?1',
    'sec-fetch-dest': 'document',
    'referer': 'https://www.speechanddebate.org/login/',
    'accept-language': 'en-US,en;q=0.9',
         }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM