博客
关于我
Python+pytest接口自动化之cookie绕过登录(保持登录状态)
阅读量:799 次
发布时间:2023-03-07

本文共 1211 字,大约阅读时间需要 4 分钟。

cookie绕过登录:技术深度解析

前言

在编写接口自动化测试用例或其他脚本时,经常会遇到需要绕过用户名/密码或验证码登录的情况。直接登录会导致效率低下,资源浪费。然而,有些网站使用cookie来识别用户身份。我们可以通过获取登录后的cookie,绕过直接登录,直接请求所需接口。

cookie工作原理

HTTP协议1.0是无状态的,无法记忆用户登录状态。为了解决这个问题,cookie机制应运而生。简单来说,cookie通过在客户端存储用户信息,服务器通过验证cookie来维持用户登录状态。

具体流程如下:

  • 用户发送请求,服务器返回响应头中的Set-Cookie字段。
  • 客户端保存cookie信息。
  • 每次请求时,客户端在请求头中携带cookie。
  • 服务器通过cookie验证客户端身份。
  • 以登录某网站为例,登录成功后,服务器返回set-cookie字段。浏览器保存该cookie,后续请求携带该cookie,服务器识别登录状态。

    cookie绕过登录

    1、适用场景
    • 网络爬虫:处理验证码登录,获取登录后的cookie用于接口请求。
    • 接口自动化测试:减少登录请求频率,提高效率。
    • 其他需要绕过登录的场景。
    2、使用cookie绕过登录的示例

    需求:访问博客园获取个人信息。分析:

    • 登录方式:用户名、密码或手机验证码。
    • 可尝试使用cookie绕过登录。
    3、实现步骤
  • 使用手机验证码登录,使用Fiddler抓包获取登录后的cookie。
  • 编写python代码,使用获取到的cookie请求个人信息接口。
  • 实际操作流程

  • 登录网站,使用Fiddler抓包获取登录后的cookie。
    • 通过抓包工具捕获登录成功后的cookie。
  • 编写python代码,使用获取到的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(url=url, headers=headers).textprint(res)
    1. 验证结果:
      • 加上cookie,请求接口成功获取个人信息。
      • 不带cookie,提示需登录,验证成功。
    2. 总结

      cookie绕过登录是通过保持登录状态实现的,而非真正绕过登录。cookie机制广泛应用于会话管理中。除了cookie,还有session和token等方式。理解这些技术有助于更好地解决实际问题。

    转载地址:http://ygofk.baihongyu.com/

    你可能感兴趣的文章
    python3简单使用requests 用户代理,cookie池
    查看>>
    Python3组播通信编程实现教程(发送者+接收者)
    查看>>
    Python3编写网络爬虫10-数据存储方式三-CSV文件存储
    查看>>
    python3读取redis返回数据带有'b'的问题
    查看>>
    Python3连接MySQL
    查看>>
    Python关于isinstance函数的解析 | 附Demo(全)
    查看>>
    Python3:setup.py:完成所有任务的PIP安装(Build_ext+Install)
    查看>>
    python4.0 gil_Python 并发编程系列--1、浅谈GIL历史及对多线程的影响
    查看>>
    python60行绘图程序_天底下最简单的QT画图板,就一个类,60行代码
    查看>>
    Python: AES加密与解密
    查看>>
    Python: Range() 最大尺寸;动态的还是静态的?
    查看>>
    Python: Windows下用 multiprocessing 的深坑
    查看>>
    python:Could not find platform independent libraries <prefix>解决方法
    查看>>
    Python:datetime tzinfo 时区名称文档
    查看>>
    Python:deepcopy(list) vs new_list = old_list[:]
    查看>>
    Python:Google API - 从消息中获取 mimeTypes
    查看>>
    Python:Google API - 从消息中获取 mimeTypes
    查看>>
    Python:subprocess.call,stdout to file,stderr to file,在屏幕上实时显示stderr
    查看>>
    Python:TypeError:无法连接“str“和“int“对象
    查看>>
    Python:XPath 在 ElementTree 中不可用
    查看>>