博客
关于我
Python+pytest接口自动化之cookie绕过登录(保持登录状态)
阅读量:803 次
发布时间: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/

    你可能感兴趣的文章
    Python:将列表列表初始化为一定大小,
    查看>>
    Python:带有生成器的给定集合的幂集
    查看>>
    Python:按字符的位置拆分字符串
    查看>>
    Python:替换嵌套字典中的值
    查看>>
    Python:爬取数据出现response.status_code为403解决方法
    查看>>
    Python:爬取数据出现response.status_code为418解决方法
    查看>>
    Python:生成“元组集“;来自“元组列表“;不考虑顺序
    查看>>
    Python:生成具有趋势的随机时间序列数据(例如周期性、指数衰减等)
    查看>>
    Python:用渐进式数字重命名列表中的重复项而不对列表进行排序
    查看>>
    Python:矩形参数无效
    查看>>
    Python:语法进阶
    查看>>
    Python:调用复制函数时调用 Python 对象时超出了最大递归深度
    查看>>
    Python:这两个 import 语句有什么区别?
    查看>>
    Python:通过串口从 Velleman k8090 读取数据
    查看>>
    python:遍历具有列表值的字典
    查看>>
    Python:降低精度 pandas 时间戳数据帧
    查看>>
    python:非阻塞子进程,检查标准输出
    查看>>
    PythonABC多重继承
    查看>>
    Pythonargparse中的多个参数
    查看>>
    Python关于 *args 和 **kwargs 参数的详解(全)
    查看>>