【网络工具】Charles 实战(下)

news2024/11/12 17:34:10

✍个人博客:Pandaconda-CSDN博客
📣专栏地址:http://t.csdnimg.cn/iAmAo
📚专栏简介:在这个专栏中,我将会整理一些工作或学习中用到的工具介绍给大家~

📘Charles 系列文章:

  • 【网络工具】Charles 介绍及环境配置
  • 【网络工具】Charles 实战(上)
  • 【网络工具】Charles 实战(下)

❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

5. 弱网测试

5.1 Charles 流量配置

具体步骤:

  1. 在 Charles 窗口中点击菜单 "Proxy" -> "Throttle Setting"。

  2. 在打开的设置窗口中勾选 "Enable Throttling" 选项。

  3. 在 "Throttle preset" 下拉框中选择对应的网络类型。

  4. 最后点击 "OK" 按钮。

上图需要注意的参数:

  • Bandwidth:带宽

  • Reliability:可靠性(默认 100%)

  • Stability:稳定性(默认 100%)

可以通过设置上述参数来模拟一些丢包或弱网的环境,从而可以测试系统的稳定性。

5.2 弱网测试实例

实例背景:

将 Charles 的网络流量配置成 56K modem 的网络,查看人力资源网站的员工菜单打开情况。

具体操作:

1. 先打开页面,并在 Charles 进行抓包,查看响应时间。

2. 在 "Proxy" -> "Throttle Setting" 中调低可靠性和稳定性参数。

3. 再次打开平台页面,用 Charles 进行抓包,查看响应时间并且感受页面的响应速度。

结果分析:

  1. 从时间分析,抓包发现响应变慢。

  2. 从页面展示状态分析,可以明显的感觉到打开页面速度变慢。

6. 修改请求和响应

在测试时,我们时常会重定向请求的地址,以及修改请求或者响应的内容。Charles 提供了 MAP、Rewrite、Breakpoints 三大功能来实现

  • Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件

  • Rewrite 功能适合对网络请求进行一些正则替换

  • Breakpoints 功能适合做一些临时性的修改

6.1 Map - Mock 功能

Map 功能分为 Map Remote 和 Map Local。

  • Map Local 是将响应的内容重定向到本地文件

    • 比如我们需要测试 APP 端页面分页等效果是否展示正常,这时候就可以做一些假的数据文件,然后通过 Map Local 将请求映射到该文件之中,从而可以直观的在 APP 端展现页面是否有问题。

  • Map Remote 是将指定的网络请求重定向到另一个网址请求地址

    • 在测试时,我们通常有线上和线下两套环境,而我们的 APP 直接打开是请求的线上环境,这时候就需要通过 Charles 的 Map Remote 功能,实现重定向请求到线下环境进行测试,这时候也可以使用 Map Local 来修改响应结果。

在 Charles 的菜单中,选择 “Tools”->”Map Remote” 或 “Map Local” 即可进入到相应功能的设置页面。

Map Local

现在假设我也测试这个页面「作者最新文章」这一栏的标题是否能正常展示。

第一步:我们需要找到需要 mock 的接口,然后在该 url 上点击鼠标右键,选择 “Save Response...”。

然后选择一个地方保存该 json 数据。

第二步:更改前两篇文章的标题。

第三步:在需要 mock 的接口上点击鼠标右键,选择 “Map Local...”。

第四步:选择刚才 mock 好的假数据,然后点击 “OK”。

我们在 “Tool” 下选择 Map Local...” 也能看到我们刚才配置的信息。

第五步:刷新一下刚才的页面,就能看到我们 mock 的假数据了。

Map Remote

我们同样测试百度这个界面,现在我想将 csdn 的页面重定向到 bilibili 的页面。

第一步:找到对应的接口并点击鼠标右键,选择 “Map Remote...”。

第二步:填写要重定向的地址信息,并点击 “OK” 即可。

第三步:刷新 csdn 网址,就可以发现此时已经重定向到 bilibili 的界面了,只不过是获取不到页面图片的。

6.2 Rewrite

修改请求或者返回结果 Body 或者 Header 内容,支持正则表达式。

Rewrite 还可以和 Map Remote 配合使用。即先重定向地址,然后修改请求头或返回结果等,注意如果需要在 Map Remote 勾选 Preserve host in header fields,不然 Rewrite 无法命中.

6.3 breakpoints

Charles 断点配置

作用:

用来构建异常的测试场景。

具体步骤:

1. 右击接口链接,选择 "Breakpoints"。

2. 在浏览器刷新对应接口的页面。

3. 此时会自动跳转到 Charles 并显示出接口请求信息(此时并不会马上将信息发送给服务器,而是被 Charles 截取下来)。

4. 点击 "Edit Request",修改请求的信息,点击 "Execute"。

5. 点击 "Edit Response"(此时返回的信息也不会直接返回给客户端,而是被 Charles 截取下来)。

6. 在数据格式栏中选择合适的显示格式,比如 "Json"。

7. 修改对应的数据,点击 "Execute"。

8. 回到浏览器查看数据应该为修改之后的 Response 的信息。

重点总结:

通过断点配置,客户端发送的信息会被 Charles 截取下来,不会马上发送给服务端,同时可以在 Charles 上对发送的报文进行修改后再点击发送给服务端。

另外,服务端返回的响应信息也同理,不会直接返回给客户端,而是可以在 Charles 上修改后返回给客户端。

断点调试实例

场景:

  1. 场景一:在人事管理系统中增加角色时,把角色名设置为空,然后请求到服务器。

  2. 场景二:针对查询员工接口请求时,修改返回数据 success=false, code=999, message=操作失败

具体操作:

场景一:

1. 对对应接口打断点,然后在页面添加角色。

2. 删除请求报文中发送的信息,然后点击 "Excute" 进行执行。

3. 返回信息不做修改,直接点击 "Excute" 进行返回。

4. 查看页面返回结果。

  • 结果:增加成功,页面显示为空,说明后台代码存在问题,没有判空逻辑。

场景二:

1. 对对应接口打断点,然后进行查询操作。

2. 请求报文不进行修改,直接点击 "Excute" 发送给服务端。

3. 对返回的响应报文进行修改,将 data 信息全部删除,然后将数据修改成 success=false, code=999, message=操作失败,并点击 "Excute" 返回结果。

4. 查看页面返回结果。

  • 结果:显示操作失败提示。

7. 反向代理

Charles 的反向代理功能允许我们将本地的端口映射到远程的另一个端口上。例如,在下图中,我将本机的 56467 端口映射到了远程(www.baidu.com)的 80 端口上了。这样,当我访问本地的 56467 端口时,实际返回的内容会由 www.baidu.com 的 80 端口提供的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1935741.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

昇思25天学习打卡营第02天|张量Tensor

这节学习的张量(Tensor)的内容进行总结 : 1、张量的概念:张量是一种多线性函数,可以表示矢量、标量和其他张量之间的线性关系。张量是MindSpore网络运算中的基本数据结构,类似于数组和矩阵。 2、可以通过直…

【同行案例】亚马逊精铺卖家,2年跨境选品思路分享!

店雷达年度商家实战经验分享又来啦!希望给各位商友一些选品思路参考。该商家主做亚马逊,2年跨境经验,主营类目艺术品,精铺模式。 一、亚马逊选品思路分享 ☛对于中小卖家,选择月销量300-1000可以较好平衡投入和产出&…

Langchain-Chatchat3.1版本docker部署流程——知识库问答

Langchain——chatchat3.1版本docker部署流程Langchain-Chatchat 1. 项目地址 #项目地址 https://github.com/chatchat-space/Langchain-Chatchat #dockerhub地址 https://hub.docker.com/r/chatimage/chatchat/tags2. docker部署 参考官方文档 #官方文档 https://github.c…

.env.local 配置本地环境变量 用于团队开发

.env.local 用途:.env.local 通常用于存储本地开发环境中的环境变量。这些变量可能包括敏感数据或特定于单个开发者的设置,不应该被提交到版本控制系统中。优先级:在大多数框架中,.env.local 文件中的变量会覆盖其他 .env 文件中…

【Git远程操作】向远程仓库推送 | 拉取远程仓库

目录 1.向远程仓库推送 ​1.1本地仓库的配置 1.2remote-gitcode本地仓库 1.3推送至远程仓库 2.拉取远程仓库 现阶段以下操作仅在master主分支上。 1.向远程仓库推送 工作区☞add☞暂存区☞commit☞本地仓库☞推送push☞远程仓库注意:本地仓库的某个分支 ☞推…

在Ubuntu上安装redis

Ubuntu上安装redis 一、通过下载redis的压缩包安装二、通过apt包管理器安装Redis三、修改redis的配置文件四、控制redis启动 Redis是一种开源的内存数据存储,可以用作数据库、缓存和消息代理等。本文将会介绍两种不同的安装方式,包括通过压缩包安装以及通…

钡铼Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP、OPC UA分布式IO系统BL20X系列耦合器

BL20X系列耦合器是钡铼技术开发的一款用于分布式I/O系统的设备,专为工业环境下的高速数据传输和远程设备控制而设计,支持多种工业以太网协议,包括Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP和OPC UA等。如果您正在考虑部署BL20X系列耦合…

如何学习Spark:糙快猛的大数据之旅

作为一名大数据开发者,我深知学习Spark的重要性。今天,我想和大家分享一下我的Spark学习心得,希望能够帮助到正在学习或准备学习Spark的朋友们。 目录 Spark是什么?学习Spark的"糙快猛"之道1. 不要追求完美,在实践中学习2. 利用大模型作为24小时助教3. 根据自己的节…

数据结构课程设计:源代码(C)客房信息管理系统

main.c #include <unistd.h> #include "SeqList.h" #include "User.h"int main() {SL user;SLInit(&user);char ans 0;printf("是否需要导入昨日续住客人的数据&#xff1a;y/n\n");scanf(" %c", &ans);if (ans y){L…

JVM(day2)经典垃圾收集器

经典垃圾收集器 Serial收集 使用一个处理器或一条收集线程去完成垃圾收集工作&#xff0c;更重要的是强调在它进行垃圾收集时&#xff0c;必须暂停其他所有工作线程&#xff0c;直到它收集结束。 ParNew收集器 ParNew 收集器除了支持多线程并行收集之外&#xff0c;其他与 …

C++写一个线程池

C写一个线程池 文章目录 C写一个线程池设计思路测试数据的实现任务类的实现线程池类的实现线程池构造函数线程池入口函数队列中取任务添加任务函数线程池终止函数 源码 之前用C语言写了一个线程池&#xff0c;详情请见&#xff1a; C语言写一个线程池 这次换成C了&#xff01;…

C#知识|账号管理系统-账号信息管理界面[1]:账号分类选择框、Panel面板设置

哈喽,你好啊,我是雷工! 前一节实现了多条件查询后端代码的编写, 接下来继续学习账号信息管理界面的功能编写,本节主要记录账号分类选择框和Panel的设置, 以下为学习笔记。 01 功能说明 本节实现以下功能: ①:账号分类选择框只能选择,无法自由输入; ②:账号分类框默认…

大语言模型与扩散模型的“爱恨情仇”:Kolors和Auraflow的技术解析

近年来&#xff0c;随着深度学习技术的发展&#xff0c;生成模型在多个领域取得了显著进展。特别是大语言模型&#xff08;LLM&#xff09;和扩散模型&#xff08;Diffusion Model&#xff09;这两类模型&#xff0c;在自然语言处理&#xff08;NLP&#xff09;和图像生成任务中…

找国内API,用哪家API平台?

随着人工智能技术的飞速发展&#xff0c;AI已经成为推动各行各业创新和转型的重要力量。在中国&#xff0c;API平台的发展尤为迅速&#xff0c;涌现出许多优秀的API服务提供商。这些平台不仅提供了丰富的API资源&#xff0c;还通过创新的技术和服务&#xff0c;帮助开发者和企业…

VXLAN到底强在哪?网络虚拟化的彻底突破?

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 你们好&#xff0c;我的网工朋友。 网络虚拟化作为一项关键技术&#xff0c;不仅提高了资源的利用效率&#xff0c;还增强了业务的敏捷性。然而&a…

gemini-pro-vision 看图说话

一、安装 pip install -U langchain-google-vertexai 二、设置访问权限 申请服务账号json格式key 三、完整代码 import gradio as gr import json import base64 from pathlib import Path import os import time import requests from fastapi import FastAPI, UploadFile,…

使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试

前言 首届YashanDB「迁移体验官」开放后&#xff0c;陆续收到「体验官」们的投稿&#xff0c;小崖在此把优秀的投稿文章分享给大家~今天分享的用户文章是《使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试》&#xff08;作者&#xff1a;尚雷&#xff09;&#xff0c…

独立游戏《星尘异变》UE5 C++程序开发日志5——实现物流系统

目录 一、进出口清单 二、路径计算 三、包裹 1.包裹的数据结构 2.包裹在场景中的运动 四、道路 1.道路的数据结构 2.道路的建造 3.道路的销毁 4.某个有道路连接的建筑被删除 作为一个工厂类模拟经营游戏&#xff0c;各个工厂之间的运输必不可少&#xff0c;本游戏采用的…

Java语言程序设计基础篇_编程练习题15.7(使用鼠标改变颜色)

15.7(使用鼠标改变颜色) 编写一个程序&#xff0c;显示一个圆的颜色&#xff0c;当按下鼠标键时颜色为黑色&#xff0c;释放鼠标时颜色为白色 代码展示&#xff1a;编程练习题15_7CircleColor.java package chapter_15;import javafx.application.Application; import javafx.…

STM32之八:IIC通信协议

目录 1. IIC协议简介 1.1 主从模式 1.2 2根通信线 2. IIC协议时序 2.1 起始条件和终止条件 2.2 发送一个字节 2.3 接收一个字节 2.4 应答信号 1. IIC协议简介 IIC协议是一个半双工、同步、一主多从、多主多从的串行通用数据总线。该通信模式需要2根线&#xff1a;SCL、…