【问题标题】:Why does my Python POST request lead me to the initial webpage?为什么我的 Python POST 请求会引导我进入初始网页?
【发布时间】:2021-05-15 21:39:30
【问题描述】:

我是这个论坛的新手,对编码比较陌生

此问题已在此处提出,但解决方案似乎对我不起作用。

我想使用 Python Post 请求登录 index.php 页面,但响应 url 与初始登录页面保持不变,表明登录不成功。

import requests as r

login_url = "https://www.example.com/index.php?login"
index_url = "https://www.example.com/gymla/index.php" #The url I want to be directed to

data = {
    "isiwebuserid": "username",
    "isiwebpasswd": "password",
    "submit": "Senden"
}

s = r.session()
response = s.post(login_url, data=data)

print(response.url)
if response.url == login_url:
    print("The attempt did not work.")

如果登录 URL 可能有误,我已经检查了

【问题讨论】:

  • 您是否检查过响应页面的内容,看看它是否提到了问题所在?也许缺少 CSRF 令牌?
  • 另外,您是否尝试过先在该页面上执行 GET 操作?如果您从 POST 开始,则不会让页面有机会设置任何可能依赖的 cookie。
  • @JohnGordon POST 并没有真正帮助,虽然我不太了解 CSRF 令牌,但我真的找不到任何关于它的错误消息。但是你让我认为表单值“提交”是一个按钮而不是文本。你认为这个问题可能与我将它作为某种形式的文本数据发布有关,而它实际上是一个按钮?
  • 我看到的唯一其他区别是表单上提交按钮的值是“提交”,而不是“发送”(尽管可能是由于本地化?)

标签: python html authentication python-requests request


【解决方案1】:

网址不变但保持固定,试试这个

if response.status_code != 200:
    print("The attempt did not work.")

【讨论】:

    【解决方案2】:

    谢谢大家回答我的问题。解决方案确实是使用 "Submit" 而不是 "Senden"

    【讨论】:

      猜你喜欢
      • 2018-12-31
      • 2019-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      • 2016-10-01
      相关资源
      最近更新 更多