Charles抓包工具使用

Charles简介

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

Charles主要功能

  • 支持SSL代理。可以截取分析SSL的请求。
  • 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
  • 支持AJAX调试。可以自动将json或xml数据格式化,方便查看。
  • 支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。
  • 支持重发网络请求,方便后端调试。
  • 支持修改网络请求参数。
  • 支持网络请求的截获并动态修改。
  • 检查HTML,CSS和RSS内容是否符合W3C标准。

开始抓包

在开始抓包之前,先来介绍下本篇文章主要涉及Charles那些?

  • Charles的介绍与安装
  • web抓包
  • App抓包
  • 抓取手机HTTPS协议
  • Charles过滤
  • 弱网测试
  • 打断点篡改数据
  • 重复发送请求
  • compose编辑接口
  • 服务器压力测试
  • 本地映射
  • 远程映射

Charles的介绍与安装

在移动互联网时代,作为测试工程师,开发工程师。绝对必须要掌握必要测试工具,今天主要来了解Charles。

官方地址:

www.charlesproxy.com/

 


 

 

web抓包

1,web 抓包

Charles Web抓包非常简单,启动Charles会自动与浏览器设置成代理,不需要进行过多的设置,接下来我就就是通过浏览器发送网络请求,Charles就会直接抓取到这些信息和响应信息

 

在这里插入图片描述

 

2,Web 抓取HTTPS协议

虽然现在Charles能够直接抓包了,但是https协议的报我们是抓取不了的,需要安装SSL证书才可以

Charles下配置 1,点击顶部菜单栏【Help】-->选择【SSL Proxying】,点击【install Charles Root Certificate 】安装Charles根证书即可; 这里由于用的笔记本截图快捷键问题,没发截取,这里截取证书安装,证书安装一直下一步就可以

在这里插入图片描述
在这里插入图片描述
2,点击【Proxy】-->【SSL Proxying Settings...】 3,在弹出选项卡中,勾选【Enable SSL Proxying】点击【add】,在Host输入【*】表示接收任何主机,在Prot输入【443】最后点击【ok】保存 在这里插入图片描述 在这里插入图片描述

 


 

 

App抓包

Charles抓包不仅仅可以抓取来在电脑端的HTTP请求,也能够抓取来自App发出的HTTP请求,但是手机抓包需要在电脑端配置下,并且同时需要手机和电脑在同一网络下

电脑端配置:

1,启动安装好的Charles抓包工具; 2,点击【Help】-->【local IP Address】获取下ip地址,也可以直接通过电脑自带的CMD命令来获取电脑IP【ipconfig】,根据自己的习惯这里的ip是取我虚拟机的;

在这里插入图片描述 在这里插入图片描述
 
3,点击【Proxy】-->【Proxy Settings】我们在设置下端口号“9999”;
在这里插入图片描述

 

手机端设置:

1,打开手机的设置页面; 2,选择【无线局域网】; 3,IOS点击连接的WIFI后面的感叹号,安卓应该是长按连接的WIFI;(注:这里主要以IOS为例) 4,点击【配置代理】-->【手动】; 5,输入本机【IP地址(192.168.1.75)】以及端口号【9999】,这是我本机的,根据自己情况合理配置; 6,点击【存储】

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述 在这里插入图片描述
接下里验证下手机请求,当我们看到Charles里能抓到这个连接,就说明配置没问题,看到unknown,这个不要紧,那是我们没有安装针对手机端的证书,下面继续我们手机端HTTPS证书安装 在这里插入图片描述

 


 

 

抓取手机HTTPS协议

通过上面的设置,虽然来自我们手机端的Http协议请求可以抓取到,但是HTTPS协议的包是不能抓取的,需要安装配置证书才可以,现在手机上大多数都已经切到https很少由http协议的了

Charles配置:

1,点击顶部菜单栏【Help】-->选择【SSL Proxying】,点击【install Charles Root Certificate】安装Charles根证书即可; 2,点击安装【Install Charles Root Certificate On a Mobile Device or Remote Browser】在移动设备上或远程浏览器安装证书即可;(这里和上面安装一样)

 

在这里插入图片描述
在这里插入图片描述 在这里插入图片描述

 

Charles过滤

通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。对于这种需求,以下几种办法:

方法一:在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:ceshi.com, 那么只需要在 Filter 栏中填入 ceshi 即可。

方法二:在 Charles 的菜单栏选择 “Proxy”->”Recording Settings”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示:

在这里插入图片描述

 


 

 

弱网测试

Charles配置弱网设置 1,点击【Proxy】-->【Throttle Setting】 2,勾选上【Enable Throttle】,也可以勾选【only for selected host 】 设置一个指定注解访问进行网络限制,不影响其他软件; 3,在【Throttle preset】选择常见预设的网络情况,也可以在【Bandwidth】自己设置网络的上传和下载速率

在这里插入图片描述 在这里插入图片描述

 


 

 

修改请求数据

1.接口处右击鼠标 勾选breakpoints(允许本接口使用breakpionts功能)
在这里插入图片描述
2.设置断点值
在这里插入图片描述
在这里插入图片描述
3.从新刷新浏览器,可修改请求参数,执行请求
在这里插入图片描述

4.执行成功
在这里插入图片描述

 


 

 

修改返回数据

复制接口链接,拷贝到Host中,勾选Response,点击Ok。

在text中编辑内容,点击Execute(执行),重新刷新页面

 

 内容更改成功
在这里插入图片描述

 


 

 

重复发送请求

在我们的测试工作中,可能你会发先一个bug,开发会让你在操作一遍,他要查看日志经i选哪个定位分析,这时候,在客户端上进行操作一遍就会麻烦,这是直接用Charles 发送一遍重复的请求就可以了,并且,重新发送请求也可以帮助我们进行功能测试; 选择需要重新发送请求的会话上,直接点击工具栏【重新按钮】

 


 

 

Compose编辑接口

在我们的测试工作中,可能需要发送不同的参数进行请求。 选择需要修改的请求,右键选择【Compose】这时多出一个笔的请求;


 

 

服务器压力测试

Charles 还有一个比较有意思的功能,它能勾简单的给服务器进行压力测试; 1,在进行压力测试的请求会话上右击,选择【Repeat Advanced】

在这里插入图片描述

2,在弹出框中,输入并发线程数以及压力次数点击进行测试

 


 

 

本地映射:Map Local

  Map Local的使用场景,要验证接口返回数据的各种场景,使用本地映射可以修改请求接口的response。
 
  1.1  保存接口响应:右键-->save response-->保存到本地路径(最好为json格式)
  
  1.2 右击选择Map local:点击接口-->右键-->Map Local进入Map Edit页面
  
  1.3  配置Map Local Map To本地文件:Edit Mapping-->Map To选择你保存到本地已修改的json文件
      • protocol:接口协议
      • Host:接口URL粘进去,自动分解到host与path文本框中
      • port:*(匹配全部)
      • Query: *(匹配全部)
    
  
       1.4 再次请求接口,接口返回response已经变成本地json文件的值。完成~
 
  1.5  关闭Map Local:点击charles工具栏中的工具,取消map Local勾选,即将本地映射关闭
 
 

远程映射:Map Remote

背景

在测试环境中,部分功能模块URL是https ,需要改成http 或其他的URL 才能正确访问到需要测试的内容。但由于架构设计 需跨团队协助修改 。

如果不想这么麻烦,Charles的Map Remote就派上用场了。

功能

把你要请求的地址,映射到一个远程地址;相当于把你的请求地址修改了;

打开charles —》Tools——》Map Remote Settings,添加你要选择映射的URl。
From 一栏填入原始的URL
To 一栏填入 要映射到的URL(你远程映射的地方)
在这里插入图片描述
还可以鼠标右击你想映射的Host
在这里插入图片描述
选择Map Remote ,将Map To 里面的Host改成你要映射到的地址即可。
在这里插入图片描述

 

例如,你可以做下面的操作

  • 您可以把 xk72.com/charles/ 映射到 localhost/charlesdev/ 来为xk72.com提供一个子目录,
  • 或者把xk72.com/*.php 这种指定后缀的所有文件映射到localhost/charlesdev/。

使用建议

如果您想开发某个网站,并且已经有了开发环境的网站,并希望把刚更新的某些文件应用到线上网站,测试下效果如何,则“远程映射”将非常有用。

例如,您可能把测试环境的css和images目录下的文件更新了。可以把live.com/css/映射到 dev.com/css/或把live.com/*.css这样的映射到dev.com。


参考链接:https://juejin.cn/post/6844904182588112904
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @   困难总比办法多  阅读(707)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示