charles抓包工具

210 阅读3分钟

Charles简介

基于Http协议的代理服务器,通过成为电脑或浏览器的代理,然后截取请求和请求结果达到分析抓包的目的(跨平台)

  • 分析前后端的问题
  • 模拟弱网测试环境
  • 使用Charles的断点构建异常的测试场景

工作原理:

前置步骤:

  1. 需要运行Charles并配置代理
  2. 在客户端上面需要配置代理

步骤

  1. 由客户端发送请求
  2. charles接收再发送给服务器
  3. 服务端返回请求结果给Charles
  4. 由Charles转发给客户端

作用:

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

优势(对比Fiddler)

  • 支持Linux、MacOS
  • 支持按域名和接口查看报文
  • 支持反向代理
  • 网络限速可选择网络类型
  • 可以解析AMF协议

Charles组件

主界面

20200901111253928.png

主导航栏

20200901115841357.png

请求栏

20200911233320777.png

Charles使用

将Charles设置成代理服务器

21da100c9f7a4dc4927625267b2ee09b.jpg

设置 SSL Proxying,抓取Https的请求信息

85ac6a30a9be41d89aa8d4dd935efebd.jpg

443端口即网页浏览端口,主要是用于HTTPS服务

148acdbf970a4776913ce04ff53f9c45-1.jpg

5235de05c7a54927a7678b7fb8862798.jpg

截取移动设备上的网络请求包

Proxy -> Proxy Settings 默认端口是8888,可以根据实际情况进行修改。

3f7f3f26290a442fb5f7737925606e94.jpg 查看本机IP地址
在这里插入图片描述
在这里插入图片描述
配置手机端IP地址

b31e111c536f49848a319f60f7cbee55.jpg

faf815756cb748c9afbc62b876a0e7c3.jpg Charles端允许移动端访问
此时,打开要调试的APP,请求就会先发送到Charles,然后Charles会先验证是否允许访问。
在这里插入图片描述
当点击允许(Allow)后,可以在Proxy -> Access Control Settings看到可以访问此代理服务器列表
在这里插入图片描述

eee52e66ff1445df90f58375a267d473.jpg 可以看到手机APP端的请求

可以看到喵街相关请求
喵街的mtop接口都在//asc这个请求下边,所以可以在Fitter里输入asc过滤一下,如图所示。
在这里插入图片描述

模拟慢速网络

有时候在测试的过程中可能需要模拟一下网络较慢的情况,这时候Charles可以配置网速。
路径:Proxy->Throttle Setting,然后选择Enable Throttling,在Throttle Preset下选择网络类型即可。
在这里插入图片描述
在这里插入图片描述

修改网络请求

有时为了调试服务器的接口,可能需要反复尝试不同参数的网络请求,Charles 可以方便地提供网络请求的修改和重发功能。只需要选中以往的网络请求,工具栏中点击 “”, 即可创建一个可编辑的网络请求。

83d152a2627f404797b03259a6d1e55a.jpg 使用七:给服务器做压力测试 Charles 的 Repeat 功能可以用来简单地测试服务器的并发处理能力。 方法:在想打压的网络请求上(POST 或 GET 请求均可)右击,然后选择 「Repeat Advanced」菜单项。

c0d1697b64dd4edcb2c02f7c6a6f6fee.jpg

71ee603535e641759a2ef8dc9385b25b.jpg

断点

在Charles中发起一个请求的时候,我们是可以给某个请求打一个断点,然后来观察或者修改请求或者响应的内容,但是在这过程中要注意请求的超时时间。

方法:要针对某一个请求设置断点,只需要在这个请求网址右击选择Breakpoints,然后点击断点按钮,就可给某个请求添加一个断点了。

bea6ff14d0cd412a991dca2b710e3b89.jpg

fbedea53698e4a49923c8ecd7d5887d1.jpg

0198ee93a33941b3909a9a18f5f2e88f.jpg

8ce30615aef54ec88bc605e673bd4df9.jpg

再次发起接口请求,此时会弹出下面的对话框;

点击【Edit Request】,修改返回的报文;

点击底部的【Execute】将修改后的报文返回;

35463e1159174b6ca71fd95058543ef4.jpg

修改Response

f92368c0d18242c48c1f8455110b036c.jpg

Charles实操:blog.csdn.net/shuang_waiw…