当前位置: 首页 > ai >正文

python+Request提取cookie

目录

参数

登录接口参数

​编辑

查询所有课程参数

python处理cookie。

提取cookie

使用json模块提取token

正则表达式re模块提取token

完整代码


参数

登录接口参数

查询所有课程参数

python处理cookie。

  1. 导入request包
    1. # 导入request包
      import requests
  2. 编写登录请求的查询参数
    1. # 编写请求
      # 登录参数
      login_param = {"phone":"15321919666","password":"123456",
      }
      # URL地址
      url_address_test = "http://www.edu2.com:8080/ssm_web/user/login"
  3. 接受响应数据
    1. # result_data_info 接受响应数据
      result_data_info = requests.post(url_address_test,data=login_param);
  4. 编写查询课程的url,并且接受
    1. # 查询课程URL
      query_all_course_address = "http://www.edu2.com:8080/ssm_web/course/findAllCourse"
      result_data_info = requests.post(query_all_course_address);
  5. 打印结果
    1. # 判断是否是JSON数据
      try:print(result_data_info.json())print("处理成功")except ValueError:print("返回结果不是JSON格式")print("响应内容是:")print(result_data_info.content)
  6. 运行程序
  7. 分析结果
    1. 在没有使用cookie的请求下
    2. 可以看到,服务器出现了错误
    3. 并且没有返回JSON数据
    4. 正常情况下这个接口会返回json数据
      1. 这个是POSTMAN返回结果
        1. Postnman可以自己管理cookie
      2. 这个是Jmeter中的返回结果
        1. Jmeter可以使用Http Cookie 管理器
        2. 或者自己提取
      3. 分析得出,发送请求的时候没有携带cookie和一些其他的参数
    5. 提取cookie

      1. # 提取登录请求的cookie
        login_cookie_info =  result_data_info.cookies print(" 登录接口中的cookie: ",login_cookie_info)
    6. 使用json模块提取token

      1. # 导入json模块
        import json
      2. json数据转化为字符串
        1. # json数据转化为字符串
          json_str_data =  json.dumps(json_data);
          print("json数据转化为字符串",json_str_data)
          
      3. 提取token

        1. login_token_info  = json.loads(json_str_data)['content']['access_token'];
          print(login_token_info)
      4. 发送查询课程请求
        1. # 查询课程URL
          query_all_course_address = "http://www.edu2.com:8080/ssm_web/course/findAllCourse"
          result_data_info = requests.post(url=query_all_course_address,cookies=login_cookie_info,headers={"content-type":"application/json;","Authorization":login_token_info},json={});
    7. 正则表达式re模块提取token

      1. 这里使用re模块使用正则表达式去提取token
      2. 导入re模块
        1. # 导入re模块
          import  re
      3. 正则表达式代码提取token

        1. # 使用正则表达式提取token
          re_token = re.findall(pattern=r"'access_token': '(.*?)'",string=str(result_data_info.json()))print("re_token的结果:" ,re_token)
        2. 正则表示式格式
          1. r"XXXXXXXXXXXXXX-XXXXXXX"
          2. . 代表任意字符
          3. + 左侧尽可能多的匹配
          4. ? 尽可能少的匹配
      4. 运行结果
        1. 通过数据比对,可以看到已经成功提取
    8. 完整代码

# 导入request包import requests# 导入json模块
import json# 导入re模块
import  re# 编写请求
# 登录参数
login_param = {"phone":"15321919666","password":"123456",
}
# URL地址
url_address_test = "http://www.edu2.com:8080/ssm_web/user/login"# result_data_info 接受响应数据
result_data_info = requests.post(url_address_test,data=login_param);
# 打印响应结果
print(result_data_info.json())# 提取登录请求的cookie
login_cookie_info =  result_data_info.cookiesprint(" 登录接口中的cookie: ",login_cookie_info)
json_data = result_data_info.json()
# 提取token# json数据转化为字符串
json_str_data =  json.dumps(json_data);
print("json数据转化为字符串",json_str_data)login_token_info  = json.loads(json_str_data)['content']['access_token'];
print(login_token_info)print("json_token ",login_token_info)# 使用正则表达式提取token
re_token = re.findall(pattern=r"'access_token': '(.*?)'",string=str(result_data_info.json()))print("re_token的结果:" ,re_token)# 查询课程URL
query_all_course_address = "http://www.edu2.com:8080/ssm_web/course/findAllCourse"
result_data_info = requests.post(url=query_all_course_address,cookies=login_cookie_info,headers={"content-type":"application/json;","Authorization":login_token_info},json={});# json={}# 判断是否是JSON数据
try:print(result_data_info.json())print("处理成功")except ValueError:print("返回结果不是JSON格式")print("响应内容是:")print(result_data_info.content)

http://www.xdnf.cn/news/15319.html

相关文章:

  • ubuntu22.04下配置qt5.15.17开发环境
  • Elasticsearch9.x核心架构概述
  • 机器学习、深度学习、神经网络之间的关系
  • 多租户云环境下的隔离性保障:虚拟化、容器、安全组如何协同防护?
  • 高德开放平台携手阿里云,面向开发者推出地图服务产品MCP Server
  • Redis技术笔记-主从复制、哨兵与持久化实战指南
  • 工业场合需要千变万化的模拟信号,如何获取?
  • Servlet基础
  • priority_queue的使用和模拟实现以及仿函数
  • FatJar打包和FatJar启动配置文件修改。
  • 对偶原理与蕴含定理
  • [论文阅读] 人工智能 + 软件工程 | 用大语言模型+排名机制,让代码评论自动更新更靠谱
  • Ubuntu22.04 python环境管理
  • 深度解析:htmlspecialchars 与 nl2br 结合使用的前后端协作之道,大学毕业论文——仙盟创梦IDE
  • nginx:SSL_CTX_use_PrivateKey failed
  • 【HTTP版本演变】
  • Python 数据建模与分析项目实战预备 Day5 - 模型训练与评估
  • 九、官方人格提示词汇总(中-1)
  • (LeetCode 每日一题) 1290. 二进制链表转整数 (链表+二进制)
  • Kafka 时间轮深度解析:如何O(1)处理定时任务
  • 前端docx库实现将html页面导出word
  • 【第一章编辑器开发基础第二节编辑器布局_3间距控制(4/4)】
  • Java 大视界 -- 基于 Java 的大数据可视化在城市地下管网管理与风险预警中的应用
  • 显示器核心三要素详解:刷新率、分辨率、色深
  • SpringBoot-26-企业云端开发实践之Vue框架状态管理VueX和数据模拟MockJS
  • 从零构建搜索引擎 build demo search engine from scratch
  • MIPI DSI(三) MIPI DSI 物理层和 D-PHY
  • MMpretrain 中的 LinearClsHead 结构与优化
  • C++标准库(std)详解
  • 1.连接MySQL数据库-demo