【实战】抓包工具charles-常用测试场景

本文详细介绍Charles抓包工具的使用方法,包括环境配置、模拟网络请求、设置断点、修改请求响应数据、模拟请求超时及返回错误等功能,适用于测试过程中获取数据、分析缺陷来源及压测需求。

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

Charles抓包工具的常用场景

Charles是一款代理服务器(与Fiddler一样),通过成为电脑或者浏览器的代理,然后截取请求和请求结果分析数据的目的。

在测试过程中,经常使用该抓包工具达到一下几种目的:

  1. 获取数据分析缺陷的来源
  2. 模拟网络请求:可选择已有的网络速度,也可手动编辑网速
  3. 模拟request请求数据、模拟response响应数据
  4. 黑名单:模拟请求超时、模拟请求返回404等

环境准备工作

  1. 手机设置代理

连接wifi—代理—设为手动—填入charles所在电脑主机名(cmd--ipconfig)、端口号(8888)--确定

  1. Charles设置端口号:proxy—proxy setting--8888--OK

http://images2015.cnblogs.com/blog/938123/201605/938123-20160510201355062-139168698.png

  1. SSL代理设置

Proxy—SSL proxy setting—填入主机名及端口号

  1. Proxy—start throttling

通过以上四个步骤设置完成后,就可以开始进行测试

  1. 设置黑名单

1、选择需要加入黑名单的请求,鼠标点击右键--选择black list即添加成功

  1. 查看/修改已加入黑名单的请求

菜单路径tools--black list;一般测试过程中用来模拟请求超时(Drop connection)或者返回403(Return 403 resopnse)

注意:

当黑名单添加成功后,对1001端口进行抓取,如图:

将黑名单去除后,对1001端口进行抓取,如图:(200为获取成功)

  1. 设置断点

设置断点,可以修改请求request数据,也可以修改response响应数据。

1.  Breakpoints settings(手动编辑断点内容)

目前使用fiddler发现设置断点,该工具有的返回的格式不是json,导致客户端不会展示

使用charles工具,可以避免该问题,具体操作如下

对要打断点的接口右键,选择【Breakpoints】,添加到断点列表后,进入proxy- Breakpoints settings设置断点的类型

断点类型分为:request断点、response断点

此处设置的断点,需要实时编辑对应的断点内容

2.自动将指定的响应(response)数据改为固定返回值

  1. 选择某一个网络请求>鼠标右键Save Response...
  2. 如果该请求返回的是一个json串,保存文件时需要保存21006.json
  3. 需要更改的请求点击右键Map Local..指定到本地保存的21006.json
  4. 通过在本地更改21006.json就可以自动的更改请求的返回值。避免每次使用时修改breakpoints中的返回值,提高效率

3.自动将指定的请求(request)数据改为固定返回值

  1. 选择某一个网络请求>鼠标右键map  remote,请求添加成功后
  2. 点击tool>map remote settings进入设置页面,双击该请求打开编辑页面
  3. 将编辑好的响应数据填充在编辑框的下半部分,如下图

按上述操作成功后,再次发起该请求,会自动使用已设置好的请求数据

  1. 设置网速

菜单路径:proxy-throttle settings,勾选enable throttling启动限速

https://i-blog.csdnimg.cn/blog_migrate/d913325ffce55b558328f045a2c2832f.png

根据以上设置成功后,接下来测试过程中发起的请求都会在该网络下运行。该功能主要用在模拟不同网速下的请求场景,例如:模拟弱网请求 ​

  1. 压测/重复发送请求

菜单路径:tools-Repeat advance,也可以在控制台上选则某个请求,然后鼠标右键打开菜单,选择Repeat advance..,打开Repeat advance的设置窗口如下:

  1. Iterations:重复次数
  2. Concurrency:并发
  3. Delays(ms):重复延迟间隔

设置重复参数后,点击ok会打开新的session进行压测,压测结果如下图:

### Charles抓包工具重放攻击实战教程 Charles是一款功能强大的抓包工具,支持HTTP/HTTPS流量的抓取、分析和调试[^1]。在实际开发中,Charles不仅可以用于网络请求分析,还可以通过其功能实现对请求的重放操作,从而模拟重放攻击场景。 #### 1. 配置Charles抓包环境 首先需要确保Charles工具已正确安装并配置完成。具体步骤包括: - 下载并安装Charles工具[^4]。 - 配置代理端口(默认为8888)。 - 设置HTTPS解密:通过菜单 `Proxy → SSL Proxying Settings` 添加目标域名和端口(如 `*` 和 `443`)[^3]。 - 如果需要抓取移动端数据,还需将手机连接到同一局域网,并设置手机代理为电脑IP和端口8888,同时安装Charles根证书以确保HTTPS抓包正常[^3]。 #### 2. 捕获目标请求 启动Charles后,访问目标网站或应用,确保相关网络请求被捕获并显示在请求列表中。可以通过过滤器功能筛选出特定的请求,以便更高效地定位目标请求[^1]。 #### 3. 修改请求参数 选中目标请求后,在右侧窗口中可以查看详细的请求信息,包括请求头、请求体等内容。如果需要模拟重放攻击,可以对这些参数进行修改。例如: - 修改请求中的关键字段(如用户ID、交易金额等)。 - 添加或删除某些请求头信息。 #### 4. 执行重放操作 Charles提供了便捷的重放功能,允许用户多次发送相同的请求以测试服务器的行为。具体操作如下: - 在请求列表中选中目标请求。 - 右键点击该请求,选择 `Repeat` 或使用快捷键 `R` 来执行一次重放[^5]。 - 如果需要连续多次重放,可以使用快捷键 `Shift + R`[^5]。 #### 5. 实战案例:模拟重复提交订单 假设目标是一个电商网站,用户在提交订单时未添加有效的防重放机制(如验证码或唯一标识符)。可以通过以下步骤模拟重复提交订单: - 使用Charles捕获提交订单的POST请求。 - 修改请求体中的商品数量或其他参数。 - 多次执行重放操作,观察服务器是否允许重复创建订单。 #### 注意事项 - 在实际测试中,建议与开发团队沟通,确保测试行为符合规范,避免误用工具造成不良后果。 - 如果目标系统已添加防重放机制(如验证码或唯一令牌),则重放攻击可能无法成功。此时可以尝试分析这些防护措施的工作原理,并提出改进建议[^2]。 ```python # 示例代码:模拟构造一个POST请求(仅用于学习目的) import requests url = "https://example.com/api/order" headers = { "Content-Type": "application/json", "Authorization": "Bearer YOUR_ACCESS_TOKEN" } data = { "itemId": 123, "quantity": 5 } response = requests.post(url, headers=headers, json=data) print(response.status_code, response.text) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Miss糖豆

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值