python - 使用 Python-Requests 提交登录表单时遇到问题(200 响应但预期 302)
问题描述
我正在尝试使用 Python 请求登录网站。我的设置是:
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'content-type': 'application/x-www-form-urlencoded',
'origin': 'https://www.naturalpartners.com',
'referer':'https://www.naturalpartners.com/us/account/login.jsp',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'}
payload = {'_dyncharset': 'UTF-8',
'_dynSessConf': '',
'/atg/userprofiling/ProfileFormHandler.flowName': 'B2B',
'_D:/atg/userprofiling/ProfileFormHandler.flowName': ' ',
'/atg/userprofiling/ProfileFormHandler.loginSuccessURL': '/us/index.jsp?',
'_D:/atg/userprofiling/ProfileFormHandler.loginSuccessURL': ' ',
'/atg/userprofiling/ProfileFormHandler.loginErrorURL': '/us/account/login.jsp?',
'_D:/atg/userprofiling/ProfileFormHandler.loginErrorURL': ' ',
'/atg/userprofiling/ProfileFormHandler.value.login': '__UsernameHidden__',
'_D:/atg/userprofiling/ProfileFormHandler.value.login': ' ',
'/atg/userprofiling/ProfileFormHandler.value.password': '__PasswordHidden__',
'_D:/atg/userprofiling/ProfileFormHandler.value.password': ' ',
'/atg/userprofiling/ProfileFormHandler.login': 'Sign In',
'_D:/atg/userprofiling/ProfileFormHandler.value.login': ' ',
'_DARGS': '/us/account/login.jsp'}
我执行登录的代码是:
from requests_html import HTMLSession
session = HTMLSession() #new session
url = 'https://www.naturalpartners.com/us/account/login.jsp?_DARGS=/us/account/login.jsp'
r = session.get('https://www.naturalpartners.com/us/account/login.jsp', headers = headers) #get login page
dyn = r.html.xpath('//input[@name="_dynSessConf"]/@value')[0] #store _dynSessConf
payload['_dynSessConf'] = dyn #assign to payload
headers['cookie'] = r.headers['Set-Cookie'] #attempt to set cookie value
post = session.post(url, data = payload, headers=headers)
我的问题是我收到 200 响应,而不是 302 表示登录成功。该帖子似乎正在使用用户名和密码完成表单,但实际上并未提交。所以登录实际上并没有发生。我不确定我错过了哪一步。谢谢
解决方案
推荐阅读
- swift - 溢出运算符的效率是否低于执行不会导致溢出的操作?
- javascript - 如何在 Angular 中动态填充下拉列表(Syncfusion Scheduler)
- typescript - vue composition api“参考或反应”是否在模板上具有深度反应?
- python - 循环遍历 csv 文件中以该列表中的元素开头的列中的关键字列表 - Python
- javascript - 从嵌套数组和嵌套对象数组中过滤对象数组
- c++ - 如何创建可变数量的线程?
- react-native - React Native Error Advice - 开发服务器返回响应错误代码:500
- python - 如何抑制python中的try except block打印出的错误
- vuejs2 - 如何在 vuetify 中创建垂直按钮
- python - 无法使用 Fast CGI (wfastcgi) 在 IIS 上托管 django。在浏览器中出现 500 错误