无法通过python登录网站

2024-10-01 02:21:38 发布

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

我试图登录到一个网站,以获取一些数据。我注意到'post'方法中没有表单数据,但是有一个'request payload'。此外,当我登录时,我再也看不到login post方法。以下是网络登录后方法的屏幕截图:

description

当我登录时,下一页显示的是我使用以下代码登录:

 import requests
 urlData = 'https://b*********.dk/Account/Market'
 urlLogin = 'https://b**********an.dk/


 with requests.Session() as c:
     urlLogin = 'https://b*************n.dk/Authorization/
     c.get(urlLogin)
     NetSession = c.cookies['ASP.NET_SessionId']
     login_data = {
                   'ASP.NET_SessionId': NetSession,
                   'username':"A******",
                   'Password':"q******",
                   'remmemberMe': True
                   }

lol = c.post(urlLogin, data=login_data)
print(lol.text)

运行此代码时,将输出以下内容:

^{pr2}$

当我输入错误的密码时,Processed值是false,而正确的凭据是true。但它不能登录。知道为什么会这样吗?在


Tags: 数据方法代码httpsdatanetloginpost
1条回答
网友
1楼 · 发布于 2024-10-01 02:21:38

正如您已经正确注意到的,原始凭证不是使用表单编码发送的(意思是&user=alice&password=secret),而是JSON编码的(因此{"user":"alice", "password": "secret"})。您还可以在请求的Content-Type报头中看到这一点,它是application/jsonwhere(与application/x-www-form-urlencoded其他的相反)。在

为了使您的定制请求生效,您可能还需要发送JSON编码的数据。这是documented in length in the official Documentation,所以我只给出一个简短的版本:

import json

# Build session and request body just like you already did in your question
# ...

headers = {"Content-Type": "application/json"}
lol = c.post(urlLogin, data=json.dumps(login_data), headers=headers)
print(lol.json())

相关问题 更多 >