Charles抓包工具实战教程(完结)

article/2025/10/31 4:30:26

Charles抓包工具测试实战教程

文章目录

  • Charles抓包工具测试实战教程
    • 学习准备
    • 目标
    • 文章介绍
    • Charles介绍
      • Charles是什么?
      • Charles工作原理?
      • Charles能做什么?
      • Charles简介
    • Charles安装和配置
      • Charles组件介绍
      • Charles主导航栏介绍
      • Charles代理配置
      • Charles访问控制
      • windows代理设置
      • mac代理设置
      • mac快捷代理设置
      • ios代理设置
      • andriods代理设置
    • Charles实战!!!
      • 抓包问题分析
      • https抓包
      • Windows证书配置
      • MacOS证书配置
      • Charles Https代理配置
      • IOS证书配置
      • 安卓(andriods)配置ssl证书
      • 处理安卓(andriod)手机部分APP可能使用了flutter等框架导致http/https请求无法抓取
      • Charles流量配置
      • 弱网测试实例
      • Charles断点配置&实例演示

学习准备

  • 有功能测试经验
    • 需求
    • 测试用例
    • 测试工具
    • 测试方法
  • 熟悉接口测试
    • 接口概念
    • 接口测试

目标

  • 能够用Charles来分析前后端的问题
  • 能够用Charles模拟弱网测试环境(弱网:网络不好的情况,或者实现2g,3g情况)
  • 能使用Charles的断点构建一场的测试场景(针对特殊测试场景,通过修改请求参数以及修改返回参数)

文章介绍

  • Charles介绍
  • Charles安装和配置
  • Charles实战

Charles介绍

Charles是什么?

Charles中文名叫青花瓷是一个基于http协议的代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的

特点:跨平台,半免费

Charles工作原理?

在这里插入图片描述

  • 前置步骤:
    1. 需要运行Charles并配置代理
    2. 在客户端上面需要配置代理
  • 步骤
    1. 有客户端发送请求
    2. Charles接收再发送给服务器
    3. 服务端返回请求结果给Charles
    4. 由Charles转发给客户端

Charles能做什么?

  • 支持HTTP及HTTPS代理
  • 支持流量控制
  • 支持接口并发请求
  • 支持重发网络请求
  • 支持断点调试

Charles简介

对比fiddler

  • Charles能够支持Linux, MacOs
  • Charles支持按域名和按接口查看报文,简洁明了
  • Charles支持反向代理
  • Charles网络限速可选择网络类型
  • Charles可以解析AMF协议

Charles安装和配置

下载地址:https://www.charlesproxy.com/

安装过程不难,要是那装不明白的话,多下载几遍qq或者微信然后安装一下就可以举一反三了

Charles组件介绍

在这里插入图片描述

Charles主导航栏介绍

  • 在这里插入图片描述清除请求数据

  • 在这里插入图片描述开始/取消抓包

  • 在这里插入图片描述开/关ssl代理

  • 在这里插入图片描述开启/关闭慢速网络

  • 在这里插入图片描述开启/关闭断点设置

  • 在这里插入图片描述请求数据

  • 在这里插入图片描述重新发送请求

  • 在这里插入图片描述校验返回的请求

  • 在这里插入图片描述工具

  • 在这里插入图片描述设置

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 在这里插入图片描述

在这里插入图片描述

Charles代理配置

  • 首先Proxy > Proxy Settings在这里插入图片描述* 点开之后默认的端口号会是8888,这里我们不做修改,但工作中如果有不同端口的话需要及时进行调整
    在这里插入图片描述

Charles访问控制

  • 首先点开Proxy > Access Control Settings在这里插入图片描述

  • 点开后
    在这里插入图片描述
    这里讲解一下点击add会让你添加ip这个ip只的就是你使用设备代理到抓包电脑的的ip,一般来讲就是你需要被抓包的设备的ip
    在这里插入图片描述
    当然我这里所填写的192.168.100.1就是我需要被抓包的设备ip,这里一般情况下需要保证被抓包设备已经是和您抓包的设备在同一网络内或者在您抓包设备的子网中,这里如果有不明白的话,可以去打字的看一下计算机网络相关知识.
    在这里插入图片描述

    我们在上上图中会发现这样一行字,大致的意思就是

    1. 当你勾选之后您的抓包设备配置了对应的代理网络ip和端口可以对应您抓包设备的ip和您之前在proxy settings中配置的端口相同时,他会向您询问是否将新的被抓包设备ip加入到ip range中
    2. 如果您不勾选的话那么,如果您不手动添加ip的话,那么是没有办法直接允许使用代理网络的
  • 当配置完对应的是没办法马上就可以进行抓包的这时候我们要进行下面的操作设置对应系统的代理才可以进行有效合理的抓包

windows代理设置

  1. 在对应的浏览器中进入设置,这里推荐使用chrome,在地址栏中输入

    chrome://settings/
    

    这个地址仅限于chrome浏览器

  2. 在搜索框中输入“代理”在这里插入图片描述

  3. 点击“打开您计算机的代理设备”在这里插入图片描述

  4. 在手动设置代理中开启代理

  5. 在地址输入框中输入您抓包设备的IP地址以及端口

  6. 点击“保存”,关闭页面

注意⚠️: 如果您的抓包设备和您被抓包的设备是同一台的win电脑的时候默认情况下,charles会默认配置好的,但是如果不是同一台win的话那么就需要一以上的操作

mac代理设置

待更新

mac快捷代理设置

待更新

ios代理设置

  1. 首先打开设置
    在这里插入图片描述

  2. 然后打开wifi(一般情况下是wifi除非您使用了usb或者蓝牙共享网络,这种骚操作暂时不讨论)
    在这里插入图片描述

  3. 接下来点击已经链接上的wifi后面的小感叹号在这里插入图片描述

  4. 拉到最下面点击 : HTTP代理>配置代理 > 选择手动然后在下方填写,您Charles运行的设备的ip以及您proxy setting中的端口号
    在这里插入图片描述

  5. 完活!

andriods代理设置

同理ios

  1. 首先打开设置进入wifi设置(ps:这里需要保证手机和charles设备[这里应该是你的电脑],在同一网络下)这里用的手机是vivo其他手机同理,请自行推理

    image-20220912213821182

  2. 接下来点击上图中的小箭头进入下方界面, 然后选择代理 -> 手动

    image-20220912214110474

    image-20220912214132563

  3. 然后去填写对应的ip和端口号吗, 这里ios也是一样的,需要填写的端口是你charles中设置的代理的端口, 而ip是需要填写您对应的charles设备的ip, 我这里使用的charles设备也就是我的电脑的ip是192.268.14.222, 所以设置如下

    image-20220912214556188

  4. 然后退出您的电脑的charles中就会出现如下, 点击allow允许代理, 窗口中的192.168.14.238, 根据上图可以推理得出就是我使用的vivo手机的ipimage-20220912213323838


Charles实战!!!

抓包问题分析

  • 前端?
  • 后端?

模拟具体实战问题:

假如在某一个系统中进行了点击某个按钮后返回以下两种提示信息:

  1. 数据异常
  2. 弹出两次数据异常

实施的具体步骤首先: Charles代理配置>客户端代理配置>操作客户端软件>分析请求数据

使用抓包工具,根据请求数据来判断是否为前端还是后端问题…此处详解等待本周休息日我写一个模拟案例之后截图进行讲解

https抓包

  • 首先判断Charles是否可以进行https抓包

    1. 我们打开https://azang.blog.csdn.net
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MaZcgWIf-1631544958989)(Charles%E6%8A%93%E5%8C%85%E5%B7%A5%E5%85%B7%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E6%95%99%E7%A8%8B.assets/image-20210913223244611.png)]

    2. 这里说明我们是可以抓到https的报文的,但是因为「粗浅的解释:HTTP是超文本传输协议,信息是明文传输,HTTPS是具有安全性的SSL加密传输协议,所以HTTPS被报文被进行了加密」,所以对于Charles需要进行的一定的配置. 这里的解决方案就是安装SSL证书

Windows证书配置

  1. 打开Charles,选择“help” -> “SSL Proxying” -> “install Charles Root Certificate”
  2. 在打开的证书框中, 点击“安装证书”, 选择“本地计算机”, 点击”下一步“
  3. 选择“将所有证书都存放下列储存”, 再点击“浏览”
  4. 选择“收信任的根证书颁发机构”, 点击“确定” -> “下一步” -> “完成”

MacOS证书配置

  1. 打开Charles,选择“Help” -> “SSL Proxy” -> “Install Charles Root Certificate”
    在这里插入图片描述
  2. 出现一个弹窗选择登陆然后添加
    在这里插入图片描述
  3. 然后会有一个钥匙串访问在登录中找到对应证书,然后将使用此证书时选择始终信任

image-20210920180529000
在这里插入图片描述

  1. 点击关闭窗口它会让输入密码,然后输入您的密码点击更新设置
    在这里插入图片描述
  2. 这时候我们可以看见证书的状态发生了改变变成了加号 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mfnA0r8e-1632134930711)(Charles%E6%8A%93%E5%8C%85%E5%B7%A5%E5%85%B7%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E6%95%99%E7%A8%8B.assets/image-20210920180920941.png)]
    在这里插入图片描述

Charles Https代理配置

  1. 在Charles窗口中点击菜单“proxy” -> “SSL proxying setting”
    在这里插入图片描述

  2. 在打开的设置窗口中勾选“Enable SSL Proxying”,如果include中没有值的话
    在这里插入图片描述
    点击add,下图中的host里面填写*表示所有的,如果您只需要特定的话填写特定的域名或者ip

    port是端口号,https默认的端口号是443
    在这里插入图片描述在这里插入图片描述

  3. 点击“OK”

  4. 我们重新打开网站https://azang.blog.csdn.net会发现我们可以得到报文了
    在这里插入图片描述

IOS证书配置

  1. 在电脑上运行Charles,并且IOS手机设置好代理,在浏览器中地址栏输入:
    http://charlesproxy.com/getssl
    在这里插入图片描述
    在这里插入图片描述

  2. 然后进入设置点击下载描述文件
    在这里插入图片描述

  3. 点击安装
    在这里插入图片描述
    在这里插入图片描述

  4. 返回“通用”页面选择“关于本机”
    在这里插入图片描述

  5. 点击“证书信任设置”,启用Charles Proxy CA证书并确认
    在这里插入图片描述

安卓(andriods)配置ssl证书

  1. 首先Charles -> help中下载ssl证书

    image-20220912221145591

  2. 然后传送到手机上接下来在手机上进行安装证书的操作

  3. 首先打开设置搜索证书, 且点击WlAN证书(这里使用的是vivo其他手机自行推理)

    image-20220912221910706

  4. 然后点击WLAN证书

    image-20220912222026555

  5. 接下来需要在你手机存储空间中找到对应的证书文件然后选择

    image-20220912222142471

  6. 然后编辑一个你可以记住的证书名称. 这里最主要还是示范演示写随便写了一个c

image-20220912222307043

  1. 点击确定之后会提示你安装完成, 这里再去charles看https的请求的话那么就会发现内容不在是密文了

    不过同时一些细心的xdm也会发现有一部分的https请求,如果开了https代理甚至是无法通过的, 比如vivo手机中的对于你vivo.com.cn域名的请求就是无法通过的, 这里就是因为厂家的内部设置了, 暂时我也没有找到解决的方案, 如果有人找到方案的话可以评论区留言

处理安卓(andriod)手机部分APP可能使用了flutter等框架导致http/https请求无法抓取

在实际情况下, 以及现在各种框架百花齐放的. 有很多框架会因为安全考量去检测本机是否使用了wifi代理, 如果使用的话这要绕过wifi代理, 这对安全更好了, 但是对于测试产生了很大的难度, 一下就是解决方案

众所周知🐶, wifi代理是代理的一种, 另一种代理是VPN, 我们可以代理所有的请求到一个ip:端口, 而VPN的代理原理是不同于wifi代理的

这原理我也是看的没有深究过, 等深究完了再更一波, 挖个坑

  • 解决方案就是下载VPN, 通过VPN来做代理, 这里比较推荐的是使用Shadowrocket因为这个甚至可以代理ws的请求,不过因为我比较懒github上面只有源码和target没有直接的安装包, 小弟也是无能安卓了, 所以这里先介绍使用Drony(当然这个在github上也是只有源码的没有直接打包成安装包的target), 不过可以在CSDN上面随便找找找一个高版本的, 或者请贵公司的安卓大佬们帮忙打个包
  1. 首先下载并且安装Drony或者其他代理软件此处仅介绍Drony(请尽量找到高版本的因为低版本的话可能会出现问题)

  2. 打开软件转到设置

    image-20220912224744165

  3. 接下来我们填写需要代理的端口号这里是和WIFI代理一样的端口号填写方式是你charles里面设置的代理端口, 我这里是8888所以填写了8888

    image-20220912224859932

  4. 然后点开无线网络, 或者下面的不是无线网络

    这里需要注意, 因为安装包你是下载的, 你也不清楚那个老哥干了啥玩意, 我这个安装包出现的问题就是我即使连的是wifi但是我的无线网络列表中就是没有任何wifi显示, 所以就只能去不是无线网络中填写对应的数据, 但如果你的无线列表中有东西且有你连接的网络那么讲究直接填写就好了

  5. 依旧是老三样

    image-20220912225200163

  6. 然后返回上层界面点击关, 一般来说下面显示的是现在的状态, 然后就会打印日志,下方可以看见我们被代理的端口, 以及上方我们转发出去的ip:端口

    image-20220912225748636

  7. 同时我们可以再次看到charles中提示类似提示, 同样点击allow

    image-20220912213323838

Charles流量配置

  1. 在charles窗口中点击菜单“Proxy” -> “Throttle Setting”
    在这里插入图片描述

  2. 在打开的设置窗口中勾选“Enable Throttling”
    在这里插入图片描述

  3. 在“Throttling preset”下拉框中选择对应的网络类型
    在这里插入图片描述
    在这里插入图片描述 参数详解:(待更新)

    • Bandwidth: 上传下载速度
    • Utilisation
    • Round-trip latency
    • MTU
    • Reliability
    • Stability
    • Unstable quality range
  4. 点击“OK”

弱网测试实例

将Charles的网络流量配置成56k modem的网络查看菜单打开情况

  1. 首先使用正常的去请求您需要进行弱网测试的网站
    在这里插入图片描述
    我们这里可以观察到我们请求的时间是835ms

  2. 接下来我们根据流量配置中讲解的方法进行弱网配置,配置成如下
    在这里插入图片描述

  3. 然后重新请求页面

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述
    我们这里发现了时间的明显变化

这里知识测试网站使用的浏览器,一般来说我们正在使用的浏览器不会出现崩溃和闪退的问题,但是对于app来说可能出现类似于闪退或者崩溃的情况,所以一般来说弱网测试多是应用于app测试

重点千万在弱网测试之后不要忘记点击小乌龟关闭弱网测试环境,不然你的网可能会变的巨慢!!!

Charles断点配置&实例演示

作用: 用来构建异常的测试场景

先打开您想测试的位置走一下对应的接口,然后找到接口之后进行如下操作,我们这里使用https://www.baidu.com进行演示

  1. 右击链接,选择“Breakpoints”
    在这里插入图片描述

  2. 在浏览器刷新对应接口的页面(或者重新走对应的接口)
    在这里插入图片描述

  3. 此时会自动跳转到Charles并显示出接口请求信息

  4. 点击“Edit Request”, 修改请求的信息, 点击“Execute“
    在这里插入图片描述
    在这里插入图片描述

  5. 点击“Edit Request”

  6. 在数据格式栏中选择合适的显示格式,比如“json”但是这里演示的是“cookie”

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述
    将框中的参数改成0

  7. 修改对应的数据, 点击“Execute”
    在这里插入图片描述

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

—最后断点讲的不太清楚,等我有自己服务器弄一个域名之后自己写一份代码在重新更新一下文档做演示


http://chatgpt.dhexx.cn/article/cZw6oiIm.shtml

相关文章

charles抓包工具使用教程

声明:本文转载自https://www.cnblogs.com/Clairewang/p/Charles.html 一、Charles官网下载链接:https://www.charlesproxy.com/download/ 二、抓包步骤: 1、安装Charles,并打开 2、电脑设置代理端口:打开charles->…

手把手教你如何使用Charles抓包

目录 一、为什么使用charles 二、下载地址 三、web抓包 四、App抓包 五、Charles过滤 六、弱网测试 七、打断点篡改数据 八、修改请求数据 九、重复发送请求 一、为什么使用charles 前几天因为需要通过抓包定位问题,打开了尘封已久的fiddler,结…

charles抓包(别名:茶壶)

一、Charles简介 Charles 是PC端的一款网络抓包工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完…

【干货】手把手教你如何使用Charles抓包

一、为什么使用charles 前几天因为需要通过抓包定位问题,打开了尘封已久的fiddler,结果打开软件后什么也干不了,别说手机抓包了,打开软件什么请求也抓不到。很多时候都是如此,如果一个方案不行,肯定要有替…

手把手教你Charles抓包工具使用

Charles简介 Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP…

【数据挖掘】2022年2023届秋招知能科技公司机器学习算法工程师 笔试题

岗位:高级机器学习算法工程师 笔试时间:2022-9-28 1 简答题 1、神经网络中防止过拟合的方法 (1)降低模型复杂度 (2)正则化 ,正则化正是通过在损失函数上添加额外的参数稀疏性惩罚项&#xf…

算法工程师面试:必备的机器学习、深度学习知识点

点击上方“机器学习与生成对抗网络”,关注星标 获取有趣、好玩的前沿干货! 作者 Oldpan 来源 oldpan博客 编辑 极市平台 前言 最近这段时间正临秋招,这篇文章是老潘在那会找工作过程中整理的一些重要知识点,内容比较杂碎&#xf…

算法工程师知识补充 - 机器学习1

书籍及视频:周志华 机器学习 公式推导:github地址 代码讲解:机器学习实战 第1章 绪论 相关术语:数据、算法、模型、预测(测试样本、泛化能力) 模型:有监督学习(分类、回归&…

2018年机器学习算法工程师——秋招自我总结

2018年机器学习算法工程师——秋招自我总结 (2018.3.12 ~ 2018.10.14) (1)简历 - 笔试 - 面试(一面,二面,……,HR面,加面) - offer - 签约 - 入职&#xff0…

【算法工程师】机器学习面试问题总结

哎呀,要秋招了啊~ 不禁感叹:How time flys~ 重新出发~ 后期我发现还是需要把相关文章的链接放上来的,方便大家深入理解记忆,如果你没时间就直接看文字,如果有时间记得把链接点开看看…

机器学习算法工程师面试总结(基于个人简历自用)

机器学习 回归和分类的相同点和不同点? 相同点:都是对输入做预测,属于有监督学习。 不同点:输出不同、目的不同、结果不同。 分类的输出是离散的、是所属类别、是定性的,回归的输出是连续的、是值、是定量的。 分类的目…

机器学习算法工程师面试问题汇总(持续更新)

目录 一、通用基础知识 1.1ReLU与Leaky ReLU 1.2损失函数 1.3怎么去选择损失函数呢? 1.4Focal loss及其优缺点 1.5特征归一化/标准化的意义 1.5Batch Normalization的原理与作用 1.6解决过拟合的方法。 二、特征工程 2.1如何进行特征选择? 三…

如何系统的学习机器学习,算法工程师入门路径

我作为一名五年前从安卓开发,成功转行算法工程师的程序员,认真回顾一下当年的学习心得。在当年研究生阶段,漫长的学习过程中,非常焦虑,并且由于机器学习先验知识较多,不像开发那样能有及时的正反馈&#xf…

如何成为一名合格的算法工程师?我们做了一次技能拆分…

文 / 张相於 成为一名合格的开发工程师不是一件简单的事情,需要掌握从开发到调试到优化等一系列能力,这些能力中的每一项掌握起来都需要足够的努力和经验。而要成为一名合格的机器学习算法工程师(以下简称算法工程师)更是难上加难…

三五族化合物半导体的杂质能级

一些重要的实验结果 1. 二族元素掺入三五族半导体中,通常取代三族元素,而位于其格点位置上,因为比三族元素少一个价电子,而倾向于接收一个价电子,而起受主的作用,引入浅受主能级 2. 六族元素掺入三五族半…

5、杂质半导体

杂质半导体 杂质半导体主要靠多数载流子导电,掺入的杂质越多,多子的浓度越高,导电性越强,实现导电性能可控。 N型半导体(电子为多数载流子,N型 因为多数载流子带负电(negative)&am…

杂质半导体

通过扩散工艺,在本征半导体中掺入少量合适的杂质元素,便可得到杂质半导体。按掺入的杂质元素不同,可形成N型半导体和P型半导体;控制掺入杂质元素的浓度,就可控制杂质半导体的导电性能。 一,N型半导体 在纯…

为什么在制作N型半导体时掺杂五价原子?而不是掺杂六价原子甚至七价原子,不是自由电子更多吗?

作者:流落的橙子星人 链接:https://www.zhihu.com/question/370990032/answer/1012032939 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 所谓N型半导体,其实就是电子型半导体&a…

半导体、本征半导体和杂质半导体

在电子电路中最常用的半导体器件就是:半导体二极管和三极管,他们是由本征半导体构成的。 导体最外层电子在外电场作用下很容易产生定向移动,形成电流。 绝缘体最外层电子受原子核束缚力很强,只有在外电场强到一定程度时才能导电…

两种杂质半导体

目录 1. P型半导体2. N型半导体 1. P型半导体 内部结构 由于P的最外层电子缺少1个电子,即形成一个空穴。邻近原子的电子填补这个空穴,就会留下新的空穴 空穴为多子,自由电子为少子 注意:整个半导体还是呈电中性的。 2. N型半导体…