Charles的使用方法

Charles的使用方法

  • Charles的使用方法
    • 会话
    • 记录
    • 请求和响应
      • 查看请求
        • 标头查看器
        • 正文查看器
      • 保存请求和响应
    • 焦点
    • 图表
    • 输出
      • CSV格式
      • Trace文件格式
      • XML文件格式
    • SSL证书
      • Windows / IE浏览器
      • Firefox浏览器
      • macOS
      • iOS设备
      • iOS模拟器
      • tvOS
      • Android
      • Chrome浏览器
      • Java应用程序
      • Python
    • 负载测试
    • Web界面
    • 命令行选项

Charles的使用方法

会话

您的会话包含您录制的所有信息,它由 会话 窗口表示,默认情况下,当您启动Charles时会自动创建一个新会话。当您使用Charles时,您可能只需要一次会话。直到你觉得需要使用多个会话的时候,你可以打开多个互不影响的会话。

当您的会话中记录变满(或太忙)时,使用 File 菜单中的 Clear Session 选项或工具栏上的 扫把 图标可以清除记录事件。

Charles的使用方法_第1张图片

使用 File 菜单中的 Save Session 选项,可以保存并重新打开会话,这在与同事交流的场景下非常有用。

记录

记录是Charles的主要功能,请求和响应将记录到当前会话中,供您稍后检查和分析。记录的请求取决于Charles的配置,通常在默认配置下,这将包括来自浏览器的所有HTTP和HTTPS流量,以及计算机上的其他应用程序(如果您的操作系统代理设置也已更改)。但是,它也可能包括来自通用 套接字1 连接的数据,例如通过 SOCKS代理2 或端口转发。

工具栏上的靶心图标

使用 Proxy 菜单中的 Start RecordingStop Recording 选项可以开始或停止记录。如果记录关闭,Charles会正常通过所有请求,但它们不会记录在会话中供您查看。还有工具栏上的 靶心 图标也可以快速开始或停止记录。

请求和响应

请求及其响应是Charles中记录的基本元素,HTTP/HTTPS由 请求 - 响应 对组成:从计算机到服务器的请求以及来自服务器的响应。对于通用套接字,请求 - 响应 由入站和出站流的全部内容组成。这对套接字来说并不总是那么有用,将来可能会有所改进。如果您需要进行大量的套接字级调试,可能需要考虑使用 Ethereal3 工具。

查看请求

记录时,请求将显示在 会话 窗口中。查看 会话 窗口有两种不同的方式: 结构视图序列视图

通过 结构视图 ,您可以查看由主机名组织的树中的请求,然后查看主机中的文件夹/目录。

Charles的使用方法_第2张图片

序列视图 使您可以按顺序查看请求,单击请求时,会话 窗口中会加载请求查看器以显示详细信息。

Charles的使用方法_第3张图片

您始终可以通过纯文本或二进制(十六进制和ascii)的形式查看HTTP请求和响应标头以及请求和响应主体,标头和正文的特殊查看器可以增强显示效果。

Charles的使用方法_第4张图片

标头查看器

  • 查询参数
  • 表格参数
  • Cookies
  • 认证
  • JSON标头

正文查看器

  • XML作为树或格式化文本
  • AMF4
  • 表格参数(包括多部分表格)
  • JSON
  • 压缩数据 - 用于查看原始压缩体

保存请求和响应

在导航器视图中右键单击请求可以获取其他选项,您可以复制或保存请求和响应正文。如果您选择多个请求,则可以一次保存所有请求。

Charles的使用方法_第5张图片

焦点

你在记录请求时通常会有很多来自不同主机的请求和响应,使Charles会话变得混乱,使用 焦点 功能,您可以将您关注的主机与不关注的主机分开。

要激活主机的 焦点 ,请右键单击 结构视图 树中的主机名,然后从菜单中选择 Focus 项。现在结构树将在顶部显示新聚焦的主机,然后显示名为 Other Hosts 的文件夹,您可以展开该文件夹以查看其他所有主机。

Charles的使用方法_第6张图片

序列视图 中,您可以勾选 Focused 复选框以仅显示序列中的聚焦主机。

Charles的使用方法_第7张图片

要查看所有焦点主机并进行编辑,请转到 View 菜单中的 Focused Hosts… 项。

Charles的使用方法_第8张图片

图表

请求的 Chart 选项卡在 Timeline 图表上显示请求和任何相关请求。图表显示了请求何时开始,响应(下载)何时开始以及何时结束。此外,如果有相关请求,那么您可以看到它们彼此之间的关系。

Charles的使用方法_第9张图片

如果您查看HTML页面,将显示相关请求,相关请求将是图像、Javascript、CSS和页面加载的其他文件。该图表对于可视化并行下载、阻塞和资源之间的依赖性非常有用。

图表上的每个条形图分为三个部分:

  • 请求 - 发送(上传)请求所花费的时间(深蓝色)
  • 延迟 - 等待服务器上的网络延迟或处理时间所花费的时间(中间蓝色)
  • 响应 - 接收(下载)响应所花费的时间(浅蓝色)

输出

通过从 File 菜单中选择 Export Session… ,可以从Charles中的会话导出数据,Charles支持多种不同的导出格式:

  • CSV
  • Trace5 文本文件
  • XML

Trace和XML格式也可用于导入。

CSV格式

CSV导出不包含所有会话信息,因此无法导入CSV,CSV只能导出包含有关请求和响应的时间以及大小的摘要数据。

Trace文件格式

这是Charles特有的纯文本文件格式,它的优点是易于读写,它特别设计用于轻松转储请求,因为它具有非常简单的语法。

XML文件格式

XML文件格式用于与第三方软件交换会话记录。

SSL证书

Charles为站点生成自己的证书,它使用Charles根证书签名,该证书是为您安装Charles而特别生成的,当您收到该证书时,您将在浏览器或其他应用程序中看到警告,因为Charles根证书不在您的受信任根证书列表中。您可以选择在遇到它时永久信任每个站点的证书,在这种情况下,您不需要信任Charles根证书。如果您想自动信任Charles发出的每张证书,请继续往下阅读。

Charles的使用方法_第10张图片

如果没有安装SSL证书,Charles记录下来的数据就会像上面图片那样显示乱码。以下内容适用于不同的浏览器和应用程序,以帮助您信任您的Charles根证书,以便您不再看到证书警告。

Windows / IE浏览器

在Charles中,转到 Help 菜单,然后选择 SSL Proxying > Install Charles Root Certificate ,将出现一个窗口,警告您CA根证书不受信任。

单击 Install Certificate 按钮以启动证书导入向导,必须将证书导入 受信任的根证书颁发机构 证书存储区,因此请覆盖默认证书存储库选择。

完成向导,现在已安装Charles根证书,您可能需要在安装生效之前重新启动IE浏览器。

Firefox浏览器

首先确保Firefox连接到Charles,您应该会在Charles中看到来自Firefox的浏览记录。

在Firefox中访问 https://chls.pro/ssl ,您将看到一个证书导入对话框。勾选 信任此CA以识别网站 选项并完成导入。

macOS

在Charles中,转到 Help 菜单,然后选择 SSL Proxying > Install Charles Root Certificate ,钥匙串访问将打开。找到 Charles Proxy… 条目,然后双击以获取相关信息,展开 信任 部分,在 使用此证书时 旁边,将其从 使用系统默认值 更改为 始终信任 ,然后关闭证书信息窗口,系统将提示您输入管理员密码以更新系统信任设置。

Charles的使用方法_第11张图片

您可能需要退出并重新打开Safari浏览器以查看更改。

iOS设备

  • 将您的iOS设备在 设置 > 无线局域网 中使用Charles的IP地址作为其HTTP代理。
  • 打开Safari浏览器并浏览到 https://chls.pro/ssl ,Safari浏览器将提示您安装SSL证书。
  • 如果您使用的是iOS 10.3或更高版本,请打开 设置 > 通用 > 关于本机 > 证书信任设置 ,然后找到 Charles Proxy CA 证书,并将其打开以启用它的完全信任。
  • 现在,您应该能够使用SSL代理访问大部分的SSL网站。

iOS模拟器

退出iOS模拟器,启动Charles并转到 Help 菜单。选择 SSL Proxying > Install Charles Root Certificate in iOS Simulators 项,这会将您的Charles根证书安装到您的所有iOS模拟器中,现在当您启动iOS模拟器时,您应该能够使用SSL代理访问大部分网站。

tvOS

要更改tvOS上的代理设置,您必须使用App Store中的Apple Configurator 2。

  • 创建新的配置文件
  • 添加全局HTTP代理有效内容
    • 代理类型:手动
    • 填写代理服务器和端口以指向桌面计算机上的Charles,无需用户名或密码。
  • 在证书有效负载中添加Charles根证书:
    • 在Charles中,从 Help > SSL Proxying 菜单选择 Save Charles Root Certificate… ,从文件类型下拉列表中选择 .cer 格式。
    • 在Apple Configurator 2中,使用该文件添加证书有效内容。

将配置文件部署到Apple TV上,然后进入 设置 > 通用 > 关于 > 证书 ,并为 Charles Proxy CA 证书启用信任。

Android

从Android N开始,您需要向应用添加配置,以使其信任Charles SSL代理生成的SSL证书,这意味着您只能对您控制的应用程序使用SSL代理,也就是说,你不能监控别人的应用程序。

要将您的应用配置为信任Charles,您需要向应用添加网络安全配置文件,此文件可以覆盖系统默认值,使您的应用程序可以信任用户安装的CA证书(例如Charles根证书)。您可以指定这仅适用于应用程序的开发、测试版本,以便生产版本使用默认信任配置文件。

将文件 res/xml/network_security_config.xml 添加到您的应用程序:

 
   
     
      
       
     
   

然后在应用的清单中添加对此文件的引用,如下所示:



    
        ...
    

Chrome浏览器

在macOS上,请按照上面的macOS说明进行操作,这些说明仅适用于Windows系统,在Charles中,转到 Help 菜单并选择 SSL Proxying > Save Charles Root Certificate ,将根证书作为二进制证书(.cer)保存到桌面,或者在可以快速访问它的位置。

在Chrome浏览器中,打开 设置 ,在设置页面的底部,单击 高级 以打开高级部分,然后单击 管理证书… 按钮,转到 受信任的根证书颁发机构 选项卡,然后单击 导入…

找到您从上一步中在Charles保存的证书文件,然后单击 下一步完成,保留默认选项,直到完成导入, Chrome现在始终信任Charles签署的证书。导入后,您可以删除保存的证书文件。

Java应用程序

您可以将Charles根证书添加到Java中的根证书信任库,然后所有Java应用程序都将信任Charles发出的证书,请注意,每次升级Java安装时都可能需要执行此操作。

在Charles中,转到 Help 菜单并选择 SSL Proxying > Save Charles Root Certificate ,将根证书保存为Base 64编码证书(.pem)到桌面,或者在可以快速访问它的地方。

现在找到 cacerts文件 ,它应该在你的 $JAVA_HOME/jre/lib/security/cacerts 中,其中 $JAVA_HOME 是你正在使用的JVM的java主目录。

在Linux上,$JAVA_HOME 可能已经设置好了。在macOS上,如果未设置,请尝试运行 /usr/libexec/java_home 以获取JVM的位置。然后键入(替换 $JAVA_HOME 和证书的相应路径):

sudo keytool -import -alias charles -file ~/Desktop/charles-ssl-proxying-certificate.pem -keystore JAVA_HOME/jre/lib/security/cacerts -storepass changeit

温馨提示,changeit 是 cacerts文件 的默认密码。在Windows上,您可能需要以管理员身份从命令提示符运行上述操作,并删除行开头的 sudo 。然后尝试:

keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit

如果您有安装多个Java,则可能需要确定运行应用程序的用途,并在适当的位置执行此操作。或者在所有Java安装上执行此操作。在macOS上,Java插件的 cacerts文件 位于 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security 。如果希望在浏览器中运行的Java程序信任Charles,则应将Charles根证书添加到该 cacerts 文件中。

Python

当您尝试在Charles中使用SSL代理时,Python的请求模块将失败并显示错误:

requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate
 verify failed (_ssl.c:590)

您可以配置信任Charles根证书的请求,首先使用 Help > SSL Proxying > Save Charles Root Certificate 菜单将证书另存为.pem文件,然后按如下方式配置会话:

from requests import Session

session = Session()
session.verify = "charles-ssl-proxying-certificate.pem"

负载测试

Charles具有基本的负载测试能力,为了负载测试,首先在Charles中启动一个新会话,并记录浏览网站的浏览器会话。您可以在网站上填写表单并执行任何其他任务,只要它们是可重现、可反复执行的。进行此录制后,建议你保存会话,以便您可以再次使用它。

Charles的使用方法_第12张图片

结构视图 的树(或其他节点)中选择站点节点,右键单击并选择 Repeat Advanced ,然后,您可以指定负载测试的一些特性,包括重复每个请求的次数以及并发级别(访问该站点的用户数量),以及迭代次数,选择 Show results in new Session 以在新会话中显示结果。

Charles的使用方法_第13张图片

上面的操作将在Charles中打开一个新会话,该会话将仅显示负载测试的请求,然后,您可以单击各种节点(包括站点节点),并使用 OverviewSummaryChart 视图查看结果。

Web界面

Charles有一个Web界面,可以让您从浏览器控制Charles,或使用Web界面作为Web服务使用外部程序。使用 Proxy 菜单中的 Web Interface Settings… 选项启用Web界面,您可以允许匿名访问,也可以配置用户名和密码。

Charles的使用方法_第14张图片

您可以通过已配置成使用Charles作为其代理的Web浏览器中访问 http://control.charles/ 来访问Web界面。

Charles的使用方法_第15张图片

Web界面提供对以下功能的访问:

  • 流量控制( Throttling
    • 激活或停用所有已配置的限制预设
      Charles的使用方法_第16张图片
  • 记录控制( Recording
    • 开始和停止会话录制
      Charles的使用方法_第17张图片
  • 工具( 记录控制
    • 激活和停用工具
      Charles的使用方法_第18张图片
  • 会话控制( Session
    • 清除当前会话
    • 以所有支持的格式导出当前会话
    • 以Charles的本机会话格式下载当前会话
      Charles的使用方法_第19张图片
  • 退出Charles( Quit
    退出Charles

通过检查Web界面的HTML代码,您可以推导出如何将其用作Web服务来自动化Charles。

命令行选项

Charles支持许多命令行选项:

    • 以Charles会话的形式打开给定文件。
  • -config
    • 指定要使用的备用配置文件,否则,Charles将其配置文件定位并存储在系统特定位置。
  • -headless
    • Headless6 模式运行Charles,没有提供GUI,但Charles仍然可以代理内容,您可以使用Web界面控制Charles的行为。
  • -throttling
    • 在启用流量限制的情况下启动Charles。

  1. 套接字百度百科 ↩︎

  2. Socks代理百度百科 ↩︎

  3. Ethereal代理百度百科 ↩︎

  4. AMF百度百科 ↩︎

  5. TRACE百度百科 ↩︎

  6. 无头模式,没有提供GUI的纯命令行模式 ↩︎

你可能感兴趣的:(测试工具)