为什么我的登录不能处理Python请求?

2024-06-26 09:48:30 发布

您现在位置:Python中文网/ 问答频道 /正文

在过去的几天里,我一直在尝试使用Python请求登录,但一直遇到问题。在

这是我的代码:

import requests

LOGINURL = "https://admin.neopets.knetik.com/admin/login"
PROTECTEDPAGE = "https://admin.neopets.knetik.com/admin/order_summary/list"

payload = {
    "_target_path": "https://admin.neopets.knetik.com/admin/dashboard",
    "_username": "***",
    "_password": "***",
    "_remember_me": "on",

}

with requests.session() as session:
     post = session.post(LOGINURL, data=payload)
     response = session.get(PROTECTEDPAGE)
     print(response.text)

我肯定我有所有需要的参数。我尝试过搜索隐藏的输入,但我遇到的唯一一个是“\u target_path”。在

你知道我错过了什么吗?在


Tags: path代码httpscomtargetadminresponsesession
1条回答
网友
1楼 · 发布于 2024-06-26 09:48:30

登录页面非常简单,但是您发布到了错误的URL。在

您要发布到的URL提供登录表单,但它不接受任何登录凭据。<form>标记告诉您将这些发送到何处:

<form action="/admin/admin_login_check" ... method="POST">

action属性是一个相对的URL,指向需要发送POST数据的情况。在

使用路径作为登录URL:

^{pr2}$

但是,有些实现希望您首先向表单页发送GET,以建立会话cookie。该页面不使用任何CSRF保护,因此不必加载表单来解析该信息。在

由于这些页面使用HTTPS,因此您可能还希望将原始表单URL作为Referer头传递(它通常是针对HTTP过滤的,或者在遍历域时,作为安全和隐私措施),站点可能会将其用作防止自动登录的附加措施:

FORMURL = "https://admin.neopets.knetik.com/admin/login"
LOGINURL = "https://admin.neopets.knetik.com/admin/admin_login_check"
PROTECTEDPAGE = "https://admin.neopets.knetik.com/admin/order_summary/list"

payload = {
    "_target_path": "https://admin.neopets.knetik.com/admin/dashboard",
    "_username": "***",
    "_password": "***",
    "_remember_me": "on",

}

with requests.session() as session:
    session.get(FORMURL)
    post = session.post(LOGINURL, data=payload, headers={'Referer': FORMURL})
    response = session.get(PROTECTEDPAGE)
    print(response.text)

如果这仍然不起作用,服务器正在使用其他机器人嗅探技术。查看python requests.get always get 404了解如果你真的想推动这一点,你可以遵循什么样的策略。在

相关问题 更多 >