python使用requests.session()模拟登录bwapp
2021/10/2 14:10:03
本文主要是介绍python使用requests.session()模拟登录bwapp,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
http/https是无状态协议
session会话对象
session对象模拟登陆
前期回顾,关于python基础知识以及爬虫基础我们可以看 ——> python学习手册,网络安全的小伙伴千万不要错过。
如下,当我们输入用户名密码进行登录的时候,浏览器向服务器发送了一个post请求,并携带了用户名、密码等参数。成功登录后服务器会进行一个302跳转并返回一个cookie值,此后每次发送请求都会携带这个cookie进行访问,代表我是这个已经登录的用户进行访问的
如登录失败则返回200,并且不会返回cookie值
但是如果按照之前这样requests.post(),直接发送登录请求。登录成功后再继续请求登录后的的页面是会不成功的,因为第二次发送的请求,服务器并不知道该请求是基于登录转态下的请求
http/https是无状态协议
http/https是无状态协议,即当我们向服务器端发送请求之后,服务器端并不会记录用户的状态,即当登录成功之后服务端并没有记录你登录成功与否的状态。而我们想要的是让服务器知道我们是已经登录后的一个状态,这样就能继续请求登录后的信息。
所以解决办法:
- 手动cookie处理:即将登录之后的cookie值,封装在headers头中。比较麻烦!
- 自动处理:session会话对象。
session会话对象
使用session会话对象无需手动添加cookie。其作用为
- 可以进行请求的发送
- 如果请求过程中产生了cookie,则该cookie会被自动存储/携带在该session对象中。即当成功登陆后,如果服务器返回了cookie值,则该cookie值会被自动封装在session会话中。接下来的请求都会携带这个cookie值
session对象模拟登陆
使用流程如下
- 创建一个session对象:session = requests.session()
- 使用session对象进行请求发送:session.get/post()
import requests url = "http://192.168.43.206/2_Shotting_Range/bWAPP/bWAPP_here/login.php" data = { 'login': 'bee', 'password': 'bug', 'security_level': '0', 'form': 'submit', } # 1.创建session对象 session = requests.session() # 2.使用session对象进行请求发送 session.post(url,data=data) #对需登录之后才能访问的页面发送请求 url = "http://192.168.43.206/2_Shotting_Range/bWAPP/bWAPP_here/user_extra.php" text = session.get(url=url).text #验证是否请求成功 with open("ad.html",'w',encoding='utf-8') as f: f.write(text) print('ok')
打开文件后,发现请求的页面和原本的页面是一样的,说明基于session请求成功了
可以继续使用proxychains抓取python脚本数据
1. 登陆的数据包
2. 对登录后的页面发送get请求,此时可以看到自动携带上了cookie。并成功响应
欢迎小伙伴和我一起共同学习
这篇关于python使用requests.session()模拟登录bwapp的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-23Python中理解和使用树形结构的简单教程
- 2024-09-23Python 编程基础入门
- 2024-09-18初探Python股票自动化交易:入门指南
- 2024-09-18Python量化入门:轻松掌握量化分析基础与实战
- 2024-09-18Python量化交易:入门指南与实践
- 2024-09-18Python量化交易:入门指南与实战技巧
- 2024-09-14Python人工智能项目实战:从零开始的实践指南
- 2024-09-14探索Python人工智能资料:初学者的指南
- 2024-09-14Python人工智能资料:初学者的全面指南
- 2024-09-13Matplotlib入门:轻松绘制Python数据可视化图表