0%

Charles学习

简介

Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器.它允许一个开发者查看所有连接互联网的HTTP通信.这些包括request,response现HTTP headers (包含cookies与caching信息).

Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。可以在Charles官网下载(该软件为付费软件,试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时)

初始化设置

在安装的过程中,Charles会请求系统代理的权限。如果在安装的过程中,没有设置或者跳过,可以在主页面中重新设置代理权限。

主界面

Charles的主界面如下图所示,左半边是发出去的请求URL以及URL过滤器,右半边是请求的相关信息,头部是相应的请求工具,如断点、重发等等

截取模拟器的请求

在Proxy 菜单,选中Proxy Settings ,打开对话框,设置端口号(默认是8888,也可以自定义),并选中 Enable transparent Http proxying 选项,如下图所示:

当在iOS模拟器做HTTP请求时,左边会相应出现请求的URL。

抓取HTTPS报文

Charles不仅能够抓取http协议的包,也能抓取https协议的包,但是由于https是经过加密的,因为抓取的包中的内容是以密文方式展现的,通过配置Charles的SSL可以方便的以明文查看https协议传输的内容

  • 电脑上配置证书

选中Charles,在“Help”菜单中选择—>“SSL Proxying”—>“Install Charles Root Certificate”,会自动打开钥匙串访问。

但是默认是不被信任的状态,右键该证书,选择显示简介,将证书设置为完全信任状态。

  • 移动设备上配置证书

一般情况下我们会使用安卓或者苹果设备进行抓包,无论是哪种设备,下述流程大体一致:

  1. 将移动设备与开启Charles的电脑设备设置在同一Wi-Fi下,并且将移动设备的HTTP代理改成电脑的IP。

以苹果设备为例:打开设置—>无线局域网—>选择网络—>点击网络名称旁边的感叹号—>将配置HTTP代理设置为手动模式—>输入电脑IP,端口号为8888

  1. 打开移动设备的浏览器,访问chls.pro/ssl会提示下载一个描述文件,下载安装即可。
  2. 打开移动设备,将该证书设置为信任状态。

以苹果设备为例:打开设置—>通用—>关于本机—>证书信任设置—>将证书设置为信任状态。

  • 配置SSL

选中Charles,在“Proxy”菜单中选择—>“SSL Proxying Settings ”,在弹出的页面中勾选Enable SSL Proxying。并在下方添加需要抓取的URL,端口号为443

之后在移动端操作,即可看到相应的请求信息。

其他功能

  • Repeat

Charles可以对某一接口进行重发,以尝试重放交易服务器响应。

右键单击URL选择Repeat,Charles会自动将该URL以及URL包含的内容原封不动的再次提交至服务器。

右键单击URL选择Repeat Advanced,在弹出框中设置重复次数、并发数以及延时等。对服务器进行简单的性能测试。

  • Breakpoints

Charles可以在请求发出前,或者是请求返回至设备前将请求拦截并篡改。

右键单击URL选择Breakpoints,然后在该请求再次发起的时候,会被拦截下来。选择Edit Request可以进行修改请求信息,修改完成后点击Execute该请求会继续发出。

  • 模拟慢速网络

有时候开发中需要测试用户在网络情况比较的差的时候应用的表现情况,可以使用Charles限流设置,”Proxy” -> “Thorttle Settings” 中设置如下: