Charle


Charles 是一个支持多平台的 HTTP 代理器、HTTP 监控、反向代理器。它能够让开发者查看本地机器与互联网之间的所有 HTTP 以及 SSL/HTTPS 传输数据。包括请求数据、响应数据 以及 HTTP 头部信息(包括 Cookie 和缓存信息)。

官网:https://www.charlesproxy.com/

charles 的主要功能

  • 支持ssl代理,可以截取分析ssl的请求
  • 支持流量空盒子,可以模拟慢速网络,以及等待时间较长的请求
  • 支持重发网络请求,方便后端调试
  • 支持修改网络请求参数
  • 支持网络请求的截获和动态修改
  • 支持端口映射
  • 支持反向代理
  • 支持Socket

界面介绍

在这里插入图片描述

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

下载与安装

  1. 最新版v4.5.6
  2. 安装Charles,打开 Charles402.dmg 包,后将 Charles 拖到 Application 目录下即完成安装。
  3. 安装完毕后,进行“upgrade”,方法很简单:Mac 将 charles.jar 覆盖到 Contents/Java 下;Windows 将 charles.jar 覆盖到 安装目录/lib 下。

功能介绍

使用 Charles 首先打开代理功能
在Charles菜单栏上选择Proxy - Mac OS X Proxy,或者点击右上方Charles小图标直接选择 Mac OS X Proxy,使得请求转给Charles代理。

代理的相关设置可以在菜单栏Proxy-Proxy Setting… 中找到。如果抓取不到浏览器的请求,请检查下浏览器代理设置是否使用本地代理,或者直接将代理服务器设置成 127.0.0.1:8888 也是可以的。

在这里插入图片描述

视图模式

Charles支持两种模式,Structure和Sequence,其优点分别如下:

  • Structure:可以很清晰的看到请求的数据结构,而且是以域名划分请求信息的,可以很清晰的去分析和处理数据
    在这里插入图片描述

  • Sequence:可以很清晰的看到全部请求,不用一层一层的去点开,这里是以数据请求的顺序去执行的,也就是说那个请求快就在前面显示。
    在这里插入图片描述

重复请求的功能

在这里插入图片描述
使用Repeat Advanced 还可以指定请求次数,这个功能非常有用,比如用来测试短信轰炸漏洞很方便。
在这里插入图片描述

查找功能

点击工具栏的放大镜或者使用快捷键command+F 即可打开查找面板:

在这里插入图片描述
双击查找结果会跳到想要的结果:
在这里插入图片描述对网络请求进行过滤,只监控向指定服务器发送的请求。

过滤网络请求

对网络请求进行过滤,只监控向指定服务器发送的请求。

在菜单栏选择 Proxy - Recording Setting。然后选择Include,选择添加一个行,然后填入需要监控的协议、主机地址、端口号,即可监控指定服务器的请求。

在这里插入图片描述

Focus 功能

使用 Focus 功能指定想要查看的域名,可以避免这个域名相关的请求淹没在茫茫请求当中。当然使用“Structure”视图也可以避免这个问题。

对想要Focus的域名,右键菜单-选择Focus,这个域名就会添加到Focused列表,可以在这里找到:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

控制网速

在Charles的菜单上,选择Proxy-Throttle Setting,在弹出的对话框中,可以选择勾选上Enable Throttling,并且可以设置Throttle Preset的类型。

如果只想模拟指定网站的慢速网络,可以再勾选图中Only for selected hosts选项。然后在对话框的下半部分设置中增加指定的Hosts项即可。

构造请求

在这里插入图片描述
点击compose按钮进入下图,就可以随便 添加Headers 或者query参数,HTTP版本支持HTTP1.0/1.1/2.0。
在这里插入图片描述
点击执行就得到想要的报文了:
在这里插入图片描述

修改请求

为了调试服务器接口,需要反复尝试不同参数的网络请求。Charles可以方便的提供网络请求的修改和重发功能。

在网络请求上单击右键,选择Edit。即可创建一个可编辑的网络请求。可以修改该请求的任何信息,包括URL、端口,参数等。修改完后,单击Execute按钮,即可发送修改后的网络请求。这对于调试与服务器端的接口非常方便。
在这里插入图片描述
在这里插入图片描述

设置断点拦截请求响应

首先开启断点功能,然后再到想要设置断点的请求上,右键设置一个断点,如图所示:

在这里插入图片描述

然后我们看看这个断点是否加入到断点设置面板:
在这里插入图片描述
果然加到这里,而且默认是拦截请求和响应,如果只需两者之一,那就双击另行设置,我这里就不改了:
在这里插入图片描述
然后,我们再次发起请求,试下是否生效了:
在这里插入图片描述
OK,没问题,在请求发送到服务器之前就被我们拦截了,这时,我们可以根据需要修改请求报文,这里我们就默认执行:
在这里插入图片描述
断点再一次生效,不过这次是拦截了响应,同样,我们可以在响应返回到客户端之前根据需要修改响应报文:
在这里插入图片描述

使用Charles抓取 iOS/Android 设备的网络包

打开 iPhone 设置 - 无线局域网,将手机网络连接到与电脑相同WiFi,点击WiFi详情按钮设置HTTP代理,将其改为手动,然后填写Charles所在电脑的代理IP地址,端口号默认为8888。
点击返回,设置成功。

此时Charles弹出请求连接的确认菜单,点击 allow 按钮即可完成设置。
在这里插入图片描述

对HTTPS请求抓包

原理:Charles实现对HTTPS进行抓包,使用的原理就是中间人技术(man-in-the-middle)。Charles会动态生成一个使用自己根证书签名的证书,Charles接收web服务器的证书,而客户端/浏览器接收Charles生成的证书,以此客户端和Charles之间建立HTTPS连接,Charles和Web服务器之间建立HTTPS连接,实现对HTTPS传输信息的抓包。如果Charles根证书不被信任则无法建立HTTPS连接,所以需要添加Charles根证书为信任证书

在这里插入图片描述
首先在电脑上安装Charles证书:菜单栏找到 Help - SSL Proxying - Install Charles Root Certificate 安装证书。8

给Mac安装证书:
在这里插入图片描述
设置为信任证书:
在这里插入图片描述
然后回到Charles,因为Charles默认不监听HTTPS请求,所以还需要开启SSL代理功能:在Proxy - SSL Proxying Setting中激活,即勾选 Enable SSL Proxying 选项。并添加域名端口,匹配想要监听的域名端口,这里可以添加*:443或*:*匹配全部:

在这里插入图片描述
如果是需要抓取手机的HTTPS请求,还需要多操作一步,就是在手机上安装相应证书:

同样找到Help - SSL Proxying - Install Charles Root Certificate on a Mobile Device or Remote Browser… ,按照弹出的提示会让你将手机切换为手动代理到电脑的Charles,然后用浏览器打开提示上面的地址下载安装证书。

在这里插入图片描述

在这里插入图片描述
然后就可以随意抓HTTPS包了:
在这里插入图片描述

Rewrite重写功能

Rewrite 可以通过正则表达式匹配并添加、修改、删除请求或响应中的头部header参数、主体内容、请求参数、响应状态、Host/Path/URL。功能非常强大、配置也非常简单。

首先在菜单栏找到Tools-Rewrite…打开设置面板:

Rewrite 可以通过正则表达式匹配并添加、修改、删除请求或响应中的头部header参数、主体内容、请求参数、响应状态、Host/Path/URL。功能非常强大、配置也非常简单。

首先在菜单栏找到Tools-Rewrite…打开设置面板:

Rewrite 可以通过正则表达式匹配并添加、修改、删除请求或响应中的头部header参数、主体内容、请求参数、响应状态、Host/Path/URL。功能非常强大、配置也非常简单。

首先在菜单栏找到Tools-Rewrite…打开设置面板:
在这里插入图片描述
在这里插入图片描述

Map Local/Remote

用过Fiddler 的同学,看名字应该可以想象得到这大概是什么功能。其实就类似AutoResponder功能,将请求映射到给定的文件。

可以通过菜单Tools-找到这些功能的设置,这里以Map Local举栗:
在这里插入图片描述

HTTP Mock

在开发环境,接口经常会挂掉,而且有时这些接口临时找不到人修复的,为了保证开发进度,无奈之下只能利用一些手段Mock数据,刚好,Charles提供了这方面的支持,那么就可以使用 Map Local 映射到本地的json文件,当Charles捕获到这个请求,不管是40X、还是50X,都会本地指向的json文件。
那么看看如何操作:

这里拿兑换密码来举栗,因为要测试修改设置兑换密码接口,但是请求这个接口之前会先请求一个叫/isHasPass的接口,来判断用户是否设置过兑换密码,为了能使用一个账号来反复测试修改兑换密码接口,就必须写一个Mock数据,模拟账号始终未设置过兑换密码,这个json文件内容,将data=1改为0:

{“servertime”:1489407444,“callback”:[],“data”:0,“status”:1,“errorcode”:"",“errorno”:0}
然后:
在这里插入图片描述
在这里插入图片描述
可是,问题来了。Fiddler的AutoResponder提供了许多默认的返回响应码,比如40X,50X等等。貌似 Map Local并没有提供,确实是没有提供,那怎么办呢?还记得前面提到的Rewrite功能吗,它提供了修改响应状态的方式,过程如下:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值