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

本文详细介绍了Charles抓包工具的使用,包括Charles的工作原理、安装配置、代理设置、SSL证书配置以及如何进行HTTPS抓包。此外,还涵盖了Windows、macOS、iOS和Android设备的代理设置,以及如何利用Charles进行弱网测试和断点调试,帮助读者掌握抓包分析和模拟网络环境的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的信息

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

Charles抓包是一种用于网络调试和分析的工具,可以捕获和查看网络请求和响应数据。它可以用于Web抓包、手机抓包以及HTTPS协议的抓取。\[1\]使用Charles抓包可以帮助开发人员了解应用程序的网络通信情况,拦截和修改请求和响应数据,进行接口调试和压力测试等操作。\[2\]在移动端抓取HTTPS包时,需要在手机端下载并安装Charles的根证书,以便进行HTTPS流量的拦截和解密。具体的安装方法可以在Charles的帮助菜单中找到。\[3\]通过实际操作,开发人员可以利用Charles抓包工具来进行网络调试和分析,以提高应用程序的性能和安全性。 #### 引用[.reference_title] - *1* [Charles 抓包实战](https://blog.csdn.net/valada/article/details/104665531)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [全网最详细charles抓包工具详细教程实战教程(细致)](https://blog.csdn.net/shuang_waiwai/article/details/124754792)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

社畜阿藏405

挣点钱不丢人吧?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值