上海建设网站浦东新区污水管网工程,网站怎样做 文件签收,网站建设毕业设计中期进度报告,wordpress 手机布局前言
我们今天来聊聊pythonpytest接口自动化之cookie绕过登录#xff08;保持登录状态#xff09;#xff0c;在编写接口自动化测试用例或其他脚本的过程中#xff0c;经常会遇到需要绕过用户名/密码或验证码登录#xff0c;去请求接口的情况#xff0c;一是因为有时验证…
前言
我们今天来聊聊pythonpytest接口自动化之cookie绕过登录保持登录状态在编写接口自动化测试用例或其他脚本的过程中经常会遇到需要绕过用户名/密码或验证码登录去请求接口的情况一是因为有时验证码会比较复杂比如有些图形验证码难以通过接口的方式去处理再者每次请求接口前如果都需要先去登录一次这样不仅效率低还耗费资源。
有些网站是使用cookie辨别用户身份的此时我们便可以先登录一次拿到登录成功后的cookie后续请求时在请求头中加入该cookie便可保持登录状态直接请求。 一、cookie工作原理
HTTP协议1.0版本是无状态的对于事务处理没有记忆能力比如用户登录了某个网站后再次刷新这个页面去请求服务器如果没有相关机制的话服务器是不知道这个请求是否还是刷新之前登录的用户发出来的。此时为了维持用户的登录状态即为了使服务器能够识别页面刷新之后的请求就可以使用cookie机制。
cookie原理简单概括如下
用户在客户端 (一般为浏览器) 中访问某个页面 也就是向服务器发送请求。服务器收到请求后会在响应头中设置Set-Cookie字段值该字段存储相关信息和状态。客户端解析服务器HTTP响应头中的Set-Cookie字段并以keyvalue的形式保存在本地之后客户端每次发送HTTP请求时都会在请求头中增加Cookie字段。服务器接收到客户端的HTTP请求之后会从请求头中取出Cookie数据来校验客户端状态或身份信息。
以登录某网站为例点击登录时请求sign_in接口请求成功后 (即登录成功后) 在响应头中会返回set-cookie字段如下 浏览器会保存上图中set-cookie字段的值后续发送请求 (即登录后进行页面操作) 时请求头中都会携带包含刚刚保存的set-cookie值的cookie如下所示 服务器接收到这个cookie后便会用它去查找内存中的记录有则校验成功。
由此可知如果需要绕过用户名密码、验证码等进行模拟登录然后再去请求其他接口那么我们可以先拿到登录成功后的cookie将cookie放在请求头中再去调用需要登录才能请求的接口便能调用成功。
现在我也找了很多测试的朋友做了一个分享技术的交流群共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源没人解答问题坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化性能安全测试开发等等方面有一定建树的技术大牛
分享他们的经验还会分享很多直播讲座和技术沙龙
可以免费学习划重点开源的
qq群号691998057【暗号csdn999】 二、cookie绕过登录
1、哪些场景需要使用cookie绕过登录
网络爬虫代码去爬取某个网站时需要验证码登录而这时代码获取验证码登录有一定难度就可以先抓取到登录后的cookie用于后续的接口请求。接口自动化测试对某个需要登录的项目进行接口测试每次请求时都先请求登录接口进行登录会影响效率而且极其不方便这时就可以抓取到第一次登录后的cookie后续每次接口请求都带上该cookie服务器就会认为是登录状态。其他需要绕过登录的场景。
2、接下来举例说明怎样编写python脚本利用cookie机制绕过登录。
需求请求接口获取博客园网自己账号的个人信息。需求分析 需要先登录头条才能去请求获取个人信息接口拿到个人信息该网站的登录方式有两种用户名、密码登录手机验证码登录可尝试使用cookie绕过这两种登录方式。
3、思路
首先先使用手机验证码登录网站Fiddler进行抓包获取登录后的cookie信息然后编写python代码拿上一步中获取到的cookie信息去请求获取个人信息接口最后个人信息获取成功便说明绕过了登录。
4、实际操作流程如下
首先登录网站Fiddler抓包获取登录成功后的cookie。 然后cookie信息去请求获取个人信息接口。
登录后同样可以抓取到获取个人信息接口的信息如下 个人信息接口请求方式为GET请求URL如图所示那么我们只需要这两点信息就足够了。接下使用上一步中拿到的cookie去请求这个接口。代码如下
import requestsurl https://account.cnblogs.com/user/userinfo
headers {user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36 Edg/99.0.1150.30,cookie: 登录成功后的cookie
}res requests.get(urlurl, headersheaders).text
print(res)
运行代码结果如下 可以看到成功获取了个人信息。
最后为了验证是cookie确实绕过了登录我们修改上面的脚本不加入该cookie请求个人信息接口代码如下
import requestsurl https://account.cnblogs.com/user/userinfo
headers {user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36 Edg/99.0.1150.30
}res requests.get(urlurl, headersheaders).text
print(res)
运行后结果如下 从上图可以看出来不加登录成功后的cookie去请求接口则会提示先登录或注册。
总结
cookie绕过登录其实是登录状态保持而不是真的不需要登录。
并非所有的网站都是使用cookie机制除了cookie机制外还有session、token等方式进行会话保持的session我已经写过一篇文章了大家感兴趣的话可以去看看。今天的分享就到这里了。
下面是配套资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你 最后 可以在公众号程序员小濠 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
如果我的博客对你有帮助、如果你喜欢我的博客内容请 “点赞” “评论” “收藏” 一键三连哦