python3 requests 模拟用户登陆失败
使用python3的Requests库模拟登陆失败。
相关代码
import requests, bs4
login_url = 'https://accounts.104.com.tw/login'
login_data = {
'username': 'user01',
'password': '*****',
}
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Mobile Safari/537.36'
}
s= requests.Session()
r = requests.get(login_url, headers=headers)
# 获取实际访问地址(这里的地址会含有sessionDadaKey等随机信息)
referer_url = r.url
print(r)
print(r.url)
# 跳转到目标地址
k = s.post(referer_url, login_data)
print(k); // 不论登陆是否成功,这里都会是<Response [200]>
print(k.url);
使用以上代码始终登陆不上,请问问题出在哪?感激不尽
更新:
将上面的k = s.post(referer_url, login_data)改为k = s.post(referer_url, data=login_data)依然不行。
这个网站登陆过程会经过很多次跳转,比较复杂,是在不知道该怎么处理,求助....
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
报错信息traceback提供一下
如果不是出现异常的话,你需要弄清楚对方接受数据的方式到底是params还是form-data还是x-www-form-urlencoded,或者有可能是网站有其他的预检机制
通过分析登陆请求,你可以发现登陆传递的数据是下面几种:
并没有,username和password,它提交的数据应该是username和password甚至还有链接上面的随机字符串,一起加密后的SAMLResponse字段,下面是我登陆时,把浏览器里面的SAMLResponse复制过去执行,可以正常登陆,所以现在解决方案有两个
1、你去查看一下它前端加密方式
2、使用selenium,模拟点击登陆按钮
我运行后的结果: