相关文章推荐
兴奋的开水瓶  ·  Spring Cloud ...·  1 年前    · 
坚强的山楂  ·  异步和任务编程 - F# | ...·  1 年前    · 
怕老婆的鸡蛋  ·  js 合并两个map-掘金·  1 年前    · 
  • 保存请求和响应
  • 焦点
  • 图表
  • 输出
  • SSL证书
  • 负载测试
  • Web界面
  • 命令行选项
  • Charles的使用方法

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

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

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

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

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

    请求和响应

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

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

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

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

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

    标头查看器

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

    正文查看器

    保存请求和响应

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

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

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

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

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

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

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

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

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

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

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

    CSV格式

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

    Trace文件格式

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

    XML文件格式

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

    SSL证书

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

    如果没有安装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… 条目,然后双击以获取相关信息,展开 信任 部分,在 使用此证书时 旁边,将其从 使用系统默认值 更改为 始终信任 ,然后关闭证书信息窗口,系统将提示您输入管理员密码以更新系统信任设置。

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

    iOS设备

    iOS模拟器

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

    要更改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 添加到您的应用程序:

    <network-security-config> 
      <debug-overrides> 
        <trust-anchors> 
          <!-- Trust user added CAs while debuggable only -->
          <certificates src="user" /> 
        </trust-anchors> 
      </debug-overrides> 
    </network-security-config>
    

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

    <?xml version="1.0" encoding="utf-8"?>
    <manifest ... >
        <application android:networkSecurityConfig="@xml/network_security_config" ... >
        </application>
    </manifest>
    

    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中启动一个新会话,并记录浏览网站的浏览器会话。您可以在网站上填写表单并执行任何其他任务,只要它们是可重现、可反复执行的。进行此录制后,建议你保存会话,以便您可以再次使用它。

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

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

    Web界面

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

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

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

    • 流量控制( Throttling
      • 激活或停用所有已配置的限制预设
        节流控制
    • 记录控制( Recording
      • 开始和停止会话录制
        在这里插入图片描述
    • 工具( 记录控制
      • 激活和停用工具
        工具
    • 会话控制( Session
      • 清除当前会话
      • 以所有支持的格式导出当前会话
      • 以Charles的本机会话格式下载当前会话
        在这里插入图片描述
    • 退出Charles( Quit
      退出Charles

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

    命令行选项

    Charles支持许多命令行选项:

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

    2. Socks代理百度百科 ↩︎

    3. Ethereal代理百度百科 ↩︎

    4. AMF百度百科 ↩︎

    5. TRACE百度百科 ↩︎

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

    1、下载完成charles后想要获取web端的https接口首先要下载charles的ssl证书 点击help,选中ssl Proxying ,点击Install Charles Root Certificate 点击”安装证书”按钮 点击”下一步”按钮 选中”将所有的证书都放入下列存储”,点击”游览”按钮,选”受新任的根证书颁发机构”,点击”确定”按钮 点击”下一步”按钮,点击”完成”按钮 点击”proxy”按钮,选中Proxy Settings… 勾选允许传输http代理,接着点击”OK”按钮 在Charles里找到要替换的视频URL,粘贴过来在文档里找到该链接删除,替换成新的视频链接。 注意快手的一个档位里有两个链接,要选择URL链接替换,选择backupurl是无效的。 替换完成后记得保存文档哦。 安装 Mac 的 cer 证书后,点击 Charles 的proxy - SSL Proxying Settings - SSL Proxying - Add,Host填写*,Port填写443​​​​​​ Charl... 一:Charles简介 Charles 是在 PC 端常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles还可以分析 Https 协议。 Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。 Charles 主要的功能包括: 截取 Htt Charles 简介 Charles 是在 PC 端常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。 Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。 Charles 是收费软件,可以免费试用 30 天。试