Charles工具的使用

简介

  • Charles 通过将自己设置为系统的网络访问代理服务器,这样所有的网络请求都会通过它,从而实现了网路请求的截获和分析。
  • Charles 不仅可以分析电脑本机的网络请求(HTTP 和 HTTPS),还可以分析移动端设备的网络请求

破解版Charles安装

  • 工具版本V4.2.8
  • 双击dmg,打开后输入密码xclient.info
    01
  • 安装完毕后,使用安装包中的charles.jar替换应用程序中的此文件进行破解
  • 安装包自带的破解文件的位置,如下图:
    02
  • 在应用程序中找到charles右击显示包内容,如下图:
    03
  • 找到应用程序中charles.jar文件所在的位置,并替换,如下图:
    04
  • 至此破解版的Charles安装完毕,去打开吧

使用教程

  • 由于对锚的支持不好,所以这里请复制目录中的标题搜索来达到快速定位到指定内容的目的

目录

  • Charles初始化设置@
  • 截取HTTP/HTTPS数据@
  • 过滤网络请求@
  • 修改网络请求@
  • 修改服务器返回内容@
  • 模拟弱网环境@
  • 服务器压力测试@
  • 反向代理@
  • 解决与翻墙软件的冲突@

Charles初始化设置@

  • 选择菜单中的“Proxy” -> "macOS Proxy",点击Grant Privileges进行授权,如下图:
    05
  • 此时电脑上的任何网络请求都可以在 Charles 的请求面板中看到
  • 工具界面介绍
    06
    • Structure将所有的网络请求按照域名划分并展示
    • Sequence将所有的网络请求按照时间排序并展示
  • 获取代理IP(图片1位置)和代理证书安装(图片2位置
    07

截取HTTP/HTTPS数据@

  • 要截获手机的网络请求就需要为 Charles 开启代理功能,选择Proxy-->Proxy Settings。填写代理的端口号并将Enable transparent HTTP proxying勾选上
    15
  • 获取Charles的代理IP
    32
  • iPhone上将Charles设置为手机的代理服务器步骤:确保手机和电脑连接是同一个wifi,点击手机wifi名称后的叹号--> 配置代理 --> 手动 -->服务器设置为图32中的IP,端口设置为8888(Charles默认端口为8888,可以通过Proxy Setting进行更改)--> 存储后就完成了代理设置
    33
  • Android华为手机版本)上将Charles设置为手机的代理服务器步骤:确保手机和电脑连接是同一个wifi长按对应的wifi网络-->修改网络-->勾选显示高级选项-->点击代理,选择手动-->设置服务器主机名为图32中的IP,服务器端口设置为8888(Charles默认端口为8888,可以通过Proxy Setting进行更改)-->点击保存后就完成了代理设置
    36
  • 截取 HTTPS 请求,需要安装 Charles 的 CA 证书
    16
  • 手机上安装CA证书如下图(在手机浏览器里输入chls.pro/ssl):
    37
  • 不管在手机上还是电脑上都要设置信任证书
    • 电脑上在keychain处将新安装的证书设置为永久信任
      38
    • 手机上安卓和iPhone的设置有所不同,这里说下iPhone的设置,安装完CA证书后,首先在通用里的描述文件里安装描述文件,安装完描述文件后在关于手机里找到证书信任设置设置为信任即可,此时重启App就可以抓包HTTPS的请求了
  • 另外有时会出现即使安装了CA 证书,Charles 还是不捕获 HTTPS 协议的网络请求,这时可以在Proxy --> SSL Proxying Setting --> 点击 Add 按钮 --> 在弹出的对话框设置里添加需要监听的 HTTPS 域或者使用*:表示监听所有 HTTPS 请求
    18
  • 设置完毕,就可以抓取 HTTPS 网络请求了

过滤网络请求@

  • 方法1:直接在Filter中输入关键字进行过滤
    11
  • 方法2:首先选中你想查看的请求,右键在菜单中勾选Focus,这样就可以只查看你感兴趣的请求了
    12
  • 方法3:忽略你不感兴趣的请求,右键在菜单中勾选Ignore,这样就可以过滤掉你不感兴趣的请求了
    13
  • 方法4:如果你不想每次都设置,可以将你经常查看的设置好,这样就不需要每次都要设置过滤了
    14

修改网络请求@

  • 对于捕获的网络请求,我们经常需要修改网络请求的URL、Headers、Cookie等信息。Charles 提供了对网络请求的编辑和重发功能。
  • 只需要选中需要修改编辑的网络请求,按下图进行操作
    19

修改服务器返回内容@

  • 为了方便调试代码,我们会有这种需求,修改接口返回的数据来模拟各种场景
  • Charles 为我们提供了超实用的功能,Map功能(Map Local、Map Remote)Rewrite功能Breakpoints功能,都可以实现修改服务端返回数据的功能,但是有区别和适用场景:
    • Map 功能适合长期地将某一请求重定向到另一个指定的网络地址或者本地 JSON 文件
    • Rewrite 功能适合对网络请求进行一些正则替换
    • Breakpoints 功能适合对网络请求进行一些临时性的修改(类似于断点作用,使用了此功能会在请求发出前接收到响应数据后都能断住来达到修改数据的目的)
Map功能
  • Map Local 功能

    • 将某个网络请求重定向到本地 JSON 文件
    • 先将某个接口的响应内容保存下来(选择对应的网络请求,右击点击 Save Response )成为 data.json 文件
      22
    • 然后编辑json数据为我们想要的目标映射文件
    • 将一个网络请求的内容映射到我本地的一个 JSON 文件,之后这个请求的内容都从网络变为返回我本地的数据了
      23
      24
  • Map Local 可能会存在一个小缺陷,其返回的 HTTP Response Header 与正常的网络请求不一样,如果程序设置了校验 Header 信息,此时 Map Local 就会失败,解决办法是同时使用 Rewrite功能将相关的HTTP 头部信息 Rewrite 成我们需要的信息

  • Map Remote 功能

    • 将网络请求重定向到另一个网络接口,适合于切换线上到本地测试服务到正式服务的场景。比如:从测试服务切换到正式服务
      25
  • 取消Map功能
    取消Map功能
Rewrite功能
  • Rewrite 适合对某个网络请求进行正则替换,以达到修改结果的目的
  • 可以针对特定的网络请求进行 Rewrite,选择Tools --> Rewrite在弹出的面板上勾选 Enable Rewrite。点击左下角的 Add按钮,设置Name便于辨识(如果有多个 Rewrite,为了后期容易区分),需要同时设置 Protocol、Port、Host、Path信息
    26
  • 然后对指定的 Type 和 Action 进行 Rewrite。Type 主要有 Add HeaderModify HeaderRemove HeaderHostPath等等。Where 可以选择 Request 和 Response。指的是下面的修改是针对 Request 还是 Response
    27
  • 完成设置后点击 Apply 按钮,即可生效。下次继续请求该网络,返回的内容就是我们刚刚设置的内容
Breakpoints 功能
  • 对网络请求进行一些临时性的修改(类似于我们开发的断点作用
  • Breakpoints 只存在于设置过的当前的网络请求,Charles 关闭后下次打开 Breakpoints 消失了
  • 对于我们设置了 Breakpoints 的网络请求, Charles 会在下次继续访问该请求的时候停止掉,就跟 debug 一样。此时我们可以 Edit Request,修改过 Request 之后点击右下角的 Execute 按钮。然后等到服务端返回的时候继续是断点状态,此时可以 Edit Response,修改过 Request 之后点击右下角的 Execute 按钮。
  • 对某个请求设置Breakpoints:选中要设置的网络请求 -> 右击 -> 点击Breakpoints
    28
  • 效果如下:依次为编辑Request - 编辑Response - 最终效果
    编辑Request
    编辑Reponse
    最终效果

模拟弱网环境@

  • 选择Proxy --> Throttle Settings
    20
  • 如果你想对指定主机进行弱网环境下的测试,可以点击上图的Add按钮,在弹出的面板上设置协议、主机、端口来对指定的主机进行弱网设置
    21

服务器压力测试@

  • 选中某个网络请 --> 右击 --> Repeat Advanced--> 弹出如下设置框
  • 在弹出的面板里面设置总共的迭代次数(Iterations)并发数(Concurrency)请求间隔时间(Repeat delay(ms))
    39
  • 专业的压力测试工具可以使用LoadRunner

反向代理@

  • Charles 的反向代理功能允许我们将本地指定端口的请求映射到远程的另一个端口上
  • 菜单栏 Proxy --> Reverse Proxies,下图表示将本地的 9999 端口映射到远程的 80 端口上,即:当访问本地的 9999 端口,实际返回的就是远程 80 端口的提供的内容
    40

解决与翻墙软件的冲突@

  • 以下方法适用于开启VPN时如何让VPN和Charles和平共处
  • 在 Charles 的 External Proxy Settings 中将翻墙的代理端口等信息填写
    09
    10
  • 需要关闭翻墙软件的自动设置,更改为手动模式

你可能感兴趣的:(Charles工具的使用)