Charles抓包工具-笔记
摘要
概念:
Charles是一款基于 HTTP 协议的代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果来达到分析抓包的目的。
功能:
Charles 是一个功能全面的抓包工具,适用于各种网络调试和优化场景。
它的强大功能如 HTTPS 解密、断点调试和带宽模拟,使其成为开发者调试网络请求和分析问题的利器,但在使用时需注意合法合规性。
代理配置:
macOS:自动开启 Charles 代理本地IP
移动端:
如果手机和电脑不是同一个域名,需要配置一下 Charles 的 Access Control Setting,里面填一下对应的IP地址。
HTTPS证书配置:
目的:实现 Charles 能够解密 HTTPS 内容
客户端配置步骤:
1-下载如下的证书(记得配置下信任证书,否则配置无效)
2-配置 Charles( “proxy” ->“SSL proxying setting”),加一个 403 端口即可
移动端见下方笔记
Charles抓包实战
- Https抓包
- 弱网测试
- 断点调试
Charles 工具简介
概念
Charles中文名叫青花瓷,它是一款基于HTTP协议的代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。
核心功能
- 抓取 HTTP 和 HTTPS 请求
- 能够捕获和记录所有通过代理发送的 HTTP/HTTPS 请求和响应。
- 数据分析
- 解析和展示请求头、响应头、Cookie、Body 数据等,支持 JSON、XML等内容解析。
- 流量控制
- 可以实现弱网环境的测试
- 支持接口并发请求
- 实现并发请求的压力测试
- 请求修改和重发
- 修改请求参数(如 URL、Header、Body)并重发,用于验证接口不同场景的行为。
- 断点调试
- 设置请求或响应的断点,手动修改数据后继续执行,模拟不同的服务器响应或客户端行为。
- SSL 解密
- 解密 HTTPS 流量,查看加密请求和响应的详细内容。
- 带宽模拟
- 模拟不同的网络带宽条件(如慢速 3G、4G 等),测试应用在不同网络环境下的表现。
- 重定向与重写规则
- 设置规则修改请求的 URL、路径或参数,用于测试本地开发或特定接口。
- 导出和共享数据
- 支持抓包记录的导出和共享,方便团队协作。
使用场景
- 接口调试
- 开发者可以查看请求参数是否正确,响应数据是否符合预期。
- 问题排查
- 分析应用中的网络问题(如请求超时、响应慢、接口错误)。
- 前后端联调
- 前端通过 Charles 查看后端接口返回的数据,调试接口对接问题。
- 移动应用抓包
- 配置手机代理抓包,调试移动端网络请求。
- 模拟攻击与测试
- 修改请求参数,测试服务器对异常输入的处理能力。
工作原理
前置步骤:
1、需要运行Charles并配置代理
2、在客户端上面需要配置代理
步骤:
1、由客户端发送请求
2、Charles接收 再发送给服务端
3、服务端返回请求结果给Charles
4、由Charles转发给客户端
Charles 优缺点
优点
- 功能强大:支持 HTTP/HTTPS 解密、断点调试、流量修改等高级功能。
- 跨平台:支持多个操作系统。
- 直观界面:可视化操作,易于上手。
- 插件扩展:支持规则自定义和自动化操作。
缺点
- 收费软件:免费试用有功能和时间限制。
- 证书安装复杂:特别是移动端 HTTPS 抓包时需要手动信任证书。
- 性能开销:对高频流量抓包可能会增加系统负担。
注意事项
- 法律与隐私:Charles 只能用于合法的抓包场景,不得用于窃取敏感信息或侵犯隐私。
- HTTPS 安全:Charles 的 SSL 解密功能会破坏 HTTPS 的安全性,仅在必要时启用,并妥善保管证书。
对比Fiddler的优点:
- Charles能够支持linux、MacOs
- Charles支持按域名和按接口查看报文,简洁明了
- Charles支持反向代理
- Charles网络限速可选择网络类型
- Charles可以解析AMF协议
Charles 抓包配置
安装 Charles
- 从官网(https://www.charlesproxy.com)下载并安装。
- 支持 Windows、macOS 和 Linux。
组件介绍
主导航栏介绍
组件介绍
请求数据栏介绍
代理设置
桌面应用抓包:
Charles 默认监听本机的 8888
端口,浏览器或应用需将代理服务器指向 127.0.0.1:8888
。
移动端抓包:
- 将手机连接到与 Charles 所在主机相同的 Wi-Fi。
- 配置手机的 HTTP/HTTPS 代理为 Charles 的地址和端口。
访问控制
配置 Proxy 下的 Access Control Settings,从而允许对应 IP 实现通过 Charles 的代理访问
MacOS 代理设置
**注意:**Charles和客户端是同一台电脑的话,默认情况下电脑的代理已经设置完成,无需配置
如果Charles和客户端不是同一台电脑的话,具体配置如下:
1-网络配置:
2-显示当前电脑的IP地址:
3-配置网页代理和安全网页代理:192.xxx.3.45:7777
iOS手机 代理设置
移动端配置需要移动端和Charles同时配置
移动端配置:
1、在iOS手机中选择“设置”-“无线局域网”
2、点击已连接的无线网络名称
3、在HTTP代理的配置代理中选择“手动”
4、输入服务器IP地址及端点,点击“存储”
Charles配置:
如果手机和电脑不是同一个域名,需要配置一下 Charles 的 Access Control Setting,里面填一下对应的IP地址。
Charles 抓包实战
https抓包
https会加密内容:
**解决方案:**安装SSL证书
步骤一:在Charles窗口中点击菜单 “proxy” ->“SSL proxying setting”
- 配置一个443端口
步骤二:在打开的设置窗口中勾选“Enable SSL Proxying”
步骤三:点击“OK”。
MacOS 证书配置
步骤一:打开 Charles,选择“Help”->“SSL Proxy”->“Install Charles Root Certificate”
iOS 证书配置
在电脑上运行Charles,且IOS手机设置好代理,在浏览器中地址栏输入:http://charlesproxy.com/getssl
弱网测试
步骤一:在Charles窗口中点击菜单“Proxy”->“Throttle Setting”
步骤二:在打开的设置窗口中勾选“Enable Throttling”
步骤三:在“Throttle preset”下拉框中选择对应的网络类型
步骤四:点击“OK”
断点调试
**作用:**用来构建异常的测试场景
1、右击接口链接,选择“Breakpoints”
2、在浏览器刷新对应接口的页面
3、此时会自动跳转到Charles并显示出接口请求信息
4、点击“Edit Request”,修改请求的信息,
点击 “Execute”
Case:
场景一:在人事管理系统中增加角色时,把角色名设置为空,然后请求到服务器
中间断点处理:把角色名设置为空
返回查看页面:新增字段为空,很明显不符合规定,应该找后端进行修改
场景二:针对查询员工接口请求时,修改返回数据success=false,code=999, message=操作失败
结果:页面显示为空
参考
- 软件测试教程Charles抓包工具测试实战
相关文章:

Charles抓包工具-笔记
摘要 概念: Charles是一款基于 HTTP 协议的代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果来达到分析抓包的目的。 功能: Charles 是一个功能全面的抓包工具,适用于各种网络调试和优化场景。 它…...
Go语言使用 kafka-go 消费 Kafka 消息教程
Go语言使用 kafka-go 消费 Kafka 消息教程 在这篇教程中,我们将介绍如何使用 kafka-go 库来消费 Kafka 消息,并重点讲解 FetchMessage 和 ReadMessage 的区别,以及它们各自适用的场景。通过这篇教程,你将了解如何有效地使用 kafk…...

【论文笔记】Number it: Temporal Grounding Videos like Flipping Manga
🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: Number it: Temporal Grou…...

C语言菜鸟入门·关键字·int的用法
目录 1. int关键字 1.1 取值范围 1.2 符号类型 1.3 运算 1.3.1 加法运算() 1.3.2 减法运算(-) 1.3.3 乘法运算(*) 1.3.4 除法运算(/) 1.3.5 取余运算(%) 1.3.6 自增()与自减(--) 1.3.7 位运算 2. 更多关键字 1. int关键字 int 是一个关键字࿰…...

基于企业微信客户端设计一个文件下载与预览系统
在企业内部沟通与协作中,文件分享和管理是不可或缺的一部分。企业微信(WeCom)作为一款广泛应用于企业的沟通工具,提供了丰富的API接口和功能,帮助企业进行高效的团队协作。然而,随着文件交换和协作的日益增…...

昇思MindSpore第七课---文本解码原理
1. 文本解码原理 文本解码是将模型的输出(通常是概率分布或词汇索引)转换为可读的自然语言文本的过程。在生成文本时,常见的解码方法包括贪心解码、束搜索(BeamSearch)、随机采样等。 2 实践 2.1 配置环境 安装mindn…...

C# 数据结构之【图】C#图
1. 图的概念 图是一种重要的数据结构,用于表示节点(顶点)之间的关系。图由一组顶点和连接这些顶点的边组成。图可以是有向的(边有方向)或无向的(边没有方向),可以是加权的ÿ…...

传输控制协议(TCP)和用户数据报协议(UDP)
一、传输控制协议(TCP) 传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的 RFC 793 定义。 它通过三次握手建立连接,确保数…...

【Python爬虫】Scrapy框架实战---百度首页热榜新闻
如何利用Scrapy框架实战提取百度首页热榜新闻的排名、标题和链接 一、安装Scrapy库 二、创建项目(以BaiduSpider为例) scrapy startproject BaiduSpider生成每个文件的功能: 二、 创建爬虫脚本(爬虫名:newsÿ…...

采用python3.12 +django5.1 结合 RabbitMQ 和发送邮件功能,实现一个简单的告警系统 前后端分离 vue-element
一、开发环境搭建和配置 #mac环境 brew install python3.12 python3.12 --version python3.12 -m pip install --upgrade pip python3.12 -m pip install Django5.1 python3.12 -m django --version #用于检索系统信息和进程管理 python3.12 -m pip install psutil #集成 pika…...
Qt 实现网络数据报文大小端数据的收发
1.大小端数据简介 大小端(Endianness)是计算机体系结构的一个术语,它描述了多字节数据在内存中的存储顺序。以下是大小端的定义和它们的特点: 大端(Big-Endian) 在大端模式中,一个字的最高有效…...

[译]Elasticsearch Sequence ID实现思路及用途
原文地址:https://www.elastic.co/blog/elasticsearch-sequence-ids-6-0 如果 几年前,在Elastic,我们问自己一个"如果"问题,我们知道这将带来有趣的见解: "如果我们在Elasticsearch中对索引操作进行全面排序会怎样…...

Java基于SpringBoot+Vue的藏区特产销售平台
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...

12-表的约束
知识背景 表的约束,就是在表中的数据上加上约束,也被称为数据完整性约束。数据完整性约束的目的是为了不被规定的、不符合规范的数据进入数据库 在录入数据库或数据发生变化时,DBMS(数据库管理系统)会按照一定的约束条件对数据进行监测&…...
【人工智能】深度学习入门:用TensorFlow实现多层感知器(MLP)模型
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 多层感知器(MLP)是一种基础的神经网络结构,广泛应用于分类和回归任务。作为深度学习的重要组成部分,理解并实现MLP是学习更复杂神经网络模型的基础。本文将介绍多层感知器的核心概念、数学原理,并使用…...

【Go】-go中的锁机制
目录 一、锁的基础知识 1. 互斥量/互斥锁 2. CAS(compare and swap) 3. 自旋锁 4. 读写锁 5. 乐观锁 & 悲观锁 6. 死锁 二、go中锁机制 1. Mutex-互斥锁 2. RWMutex-读写锁 2.1 RWMutex流程概览 2.2 写锁饥饿问题 2.3. golang的读写锁源…...
c ++零基础可视化——vector
c 零基础可视化——vector 初始化 vector<int> v0(5); // 0 0 0 0 0 vector<int> v1(5, 1); // 1 1 1 1 1 vector<int> v2{1, 2, 3} // 1 2 3 vector<int> v3(v1); // 1 1 1 1 1 vector<vector<int>> v4(2, vect…...
Centos 7 安装 Docker 最新版本
文章目录 一、卸载旧版本二、安装最新版本docker三、问题解决3.1 启动docker报错3.2 启动容器报错 一、卸载旧版本 #如果之前安装过旧版本的Docker,可以使用下面命令卸载 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest …...

构建高效在线教育:SpringBoot课程管理系统
1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理在线课程管理系统的相关信息成为必然。开发…...
二进制与网络安全的关系
二进制与网络安全的关系 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...

VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...

JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...