zoukankan      html  css  js  c++  java
  • python接口自动化5-session关联

    前言

    我们不难发现浏览器中存在着cookie缓存等,但我们在python中如果像浏览器这样的缓存,我们就很难的需要关联cookie或会话了。

    但python的requests库,就封装了Session方法、Session类实现会话对象。就好比如是python中的浏览器。

    一、Cookie 与 Session 的区别

    1、Cookie,也用复数Cookies,就是为了辨别用户身份、进行 Session 跟踪而储存在用户本地终端上的数据,通常要加密,而Cookie数据存放在客户的浏览器上;

    2、Cookie保存在客户端本地,最大是4kb,key、value形式的字典;

    3、Session:会话控制,或者会话对象,Session对象存储特定用户会话所需的属性及配置信息;

    4、Session由服务器端生成,响应给客户端,客户端每次带上Session,就可以跨请求,相当于身份识别;

    无论是基于Session的还是基于Cookie的认证方式,都需要客户端上传标识,都需要服务端下发这个标识,并且对这个标识进行加密。

    虽然加密,但是不法之人一旦拿到这个标识还是可以进行一系列非法操作,所以这个标识里边最好能加上来源IP和过期时间这些属性,再配置上https,可以更加有效的保护整个认证流程和数据。

    二、禅道登录实例

    1、正常浏览器操作登录-抓包,请求头部信息有个cookies,如下标红色字为登录必传的cookies的token,抓包数据如下。

    cookies = Cookie: lang=zh-cn; theme=default; keepLogin=on; za=admin; lastProduct=1; preBranch=0; preProductID=1; preCaseLibID=1; lastCaseLib=1; libCaseModule=2; caseModule=0; checkedItem=2%2C1; zp=d8486c87280cdfe6c3f4e53b44612c0ad486aa2f; windowWidth=1920; windowHeight=968; csrftoken=WAUVNHlXBnWmPfBPdQoK80PLq9NJcJcR6Ew1KIHBfht4Cs1Z0fhaJFn7LDdNnRt3; zentaosid=h6r0cho8eiq4na767vgjcan886

     2、fiddler 断点将cookies 删除再发送请求。

    如下图一,断点已将cookies传的参数删除,接下来允许发送。图二,明显发现登录没有成功,没有到达禅道-我的地盘这个html的返回。

    由此我们能知道,如果在接口测试中,我们没能自动关联cookies与session的话会非常不方便。

     

     3、没有关联session、cookies,明显登录没有成功。

     4、requests.session() 方法能做到控制会话。session关联后登录成功了!

    import requests
    s = requests.session()      # session() 控制会话
    print(s.cookies)            # 没请求前cookies为空
    
    url = 'http://127.0.0.1:81/zentao/user-login-L3plbnRhby8=.html'
    par = 'account=admin&password=e10adc3949ba59abbe56e057f20f883e&keepLogin%5B%5D=on&referer=%2Fzentao%2F'
    r = s.post(url, params=par)
    # 登录后查看 cookies
    print(s.cookies)
    
    r1 = s.get('http://127.0.0.1:81/zentao/my/')  # 断言
    print(r1.content.decode('utf-8'))

     requests 库是不是很简单的让session关联了呢?学会了吗?欢迎来QQ交流群:482713805

  • 相关阅读:
    log4net使用封装,无缝切换 dotnet 和 dotnetcore
    使用 certbot 申请泛域名https证书
    StackExchange.Redis中文使用文档
    在 asp.net core 中使用类似 Application 的服务
    不一样的 SQL Server 日期格式化
    你可能不知道的 docker 命令的奇淫怪巧
    [k8s]dashboard1.8.1搭建( heapster1.5+influxdb+grafana)
    [k8s]k8s 1.9(on the fly搭建) 1.9_cni-flannel部署排错 ipvs模式
    [k8s] kubelet单组件启动静态pod
    [svc]runinit管理多进程
  • 原文地址:https://www.cnblogs.com/gsxl/p/11964171.html
Copyright © 2011-2022 走看看