zoukankan      html  css  js  c++  java
  • requests模块02——获取登录cookie值&session应用

    问题一:如何获取上个接口产生的csrf_token值?

    import requests
    
    response01=requests.get('http://47.107.178.45/phpwind')    #第一个接口
    body= response01.content.decode('utf-8')     #上个接口所有的返回信息
    cookie_value=re.findall('name="csrf_token" value="(.+?)"/>',body)[0]   #获取上个页面的csrf_token值
    print(cookie_value)
    headers_info ={
                         'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36',
                         'Accept':'application/json, text/javascript, */*; q=0.01',
                         'X-Requested-With':'XMLHttpRequest'
                   }
    
    data_info={    'username':'**',
                   'password':'123456',
                   'csrf_token':cookie_value,    #引用csrf_value值
                   'csrf_token':cookie_value
               }
    para_info={'m':'u','c':'login','a':'dologin'}
    response =requests.post(url='http://47.107.178.45/phpwind/index.php',params=para_info,data=data_info,headers=headers_info)   #第二个接口
    

    背景:用户登录一网站,可在不同页面进行来回切换【因浏览器有保存csrf_token信息的会话机制,以至于用户能携带csrf_token信息正常访问下个页面】

    一、问题:如何在两个请求之间建立联系?实际遇到的问题:在pycharm+requests进行接口自动化时,如何把上个接口的csrf_token值保存到下个接口中?

    方案:requests的调用替换成session对象来调用

    代码如下:

    import requests
    import re
    
    session_re=requests.session()    #创建session对象
    response01=session_re.get('http://47.107.178.45/phpwind/')   #上个接口
    
    body= response01.content.decode('utf-8')
    value=re.findall('name="csrf_token" value="(.+?)"/>',body)[0]
    print(value)
    
    headers_info ={
                         'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36',
                         'Accept':'application/json, text/javascript, */*; q=0.01',
                         'X-Requested-With':'XMLHttpRequest'
     }
    para_info={'m':'u','c':'login','a':'dologin'}

    data_info={ 'user_name':'**', 'password':'123456', 'csrf_token':value}
    response02 =session_re.post(url='http://47.107.178.45/phpwind/index.php',params=para_info,data=data_info,headers=headers_info) #下个接口

     二、requests库中的session对象还能为我们提供请求方法的缺省数据。

    import requests
    
    headers_info ={
                         'Accept':'application/json, text/javascript, */*; q=0.01',
                         'X-Requested-With':'XMLHttpRequest'
    
                      }
    session_obj =requests.session()
    session_obj.headers.update(headers_info)   #更新session_obj对象中的header信息
    head ={'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36',}
    session_obj.get(url='http://47.107.178.45/phpwind/',headers=head)
    

      

      

  • 相关阅读:
    Saruman's Army
    Best Cow Line
    Lake Counting
    题目1417:变形金刚
    Ants
    mysql学习笔记--数据库事务
    mysql学习笔记--数据库视图
    mysql学习笔记--数据库多表查询
    mysql学习笔记--数据库单表查询
    mysql学习笔记--数据操作
  • 原文地址:https://www.cnblogs.com/miaoxiaochao/p/13054450.html
Copyright © 2011-2022 走看看