使用Python请求,我尝试登录一个门户url,该url将转发到另一个url。我读过几篇关于这个主题的帖子,甚至尝试过:
1)使用请求get和检索csrf令牌创建会话
2)使用上一步中的csrf令牌,在门户URL上发布一篇文章,有效负载为用户名/密码/和csrf令牌(使用开发人员工具时传递的信息相同)
3)在第2步之后,我仍然会得到下面的p.text作为输入用户名和密码,并且不会显示登录后的页面,并表示它正在寻找我登录
s = requests.Session()
g = s.get("myPortalURL")
resp = g.text
for item in resp.split("\n"):
if "csrf_token" in item:
print (item)
csrfToken = item.strip().split("value=")[1].replace("\"", "").replace("/>","")
data = {'Username': self.pythonDataDict["portalUsername"], 'Password': self.pythonDataDict["portalPassword"],
'csrf_token': csrfToken}
print ("payload= ", data)
headers = {'content-type': 'application/x-www-form-urlencoded'}
p = s.post("myPortalURL", headers=headers, data=data)
soup = BeautifulSoup(p.text)
print (p.text)
以下是您的代码可能存在的一些问题:
从个人经验来看;登录页面的URL应与主页的URL不同
data
中缺少信息,需要在表格中输入所有所需数据,您可能需要包括其他请求标题
获取
csrf_token
的代码可能会返回不正确的数据,具体取决于该标记的性质(尽管所有标记都不同,因此可能不会返回)另外,作为旁注,在使用会话时使用
with
语句通常更为惯用,例如如果可能的话,如果您可以包含您试图访问的页面的URL,这也会非常有帮助
相关问题 更多 >
编程相关推荐