鼠年全马铁人挑战 WEEK 38:封包测试工具 - Charles (三)

           Photo on charlesproxy.com


前言

上个礼拜分享了 Charles 选项栏中的 Tools 功能
但是因为内容过多 小弟把它拆成两个部分
而这个礼拜将会延续上礼拜的内容 将剩余的後半段方想完毕
如果还没看过前半段 Tools 功能介绍的大哥大姐可以再看一下
封包测试工具 - Charles (二)

分享重点

  • 选项栏中的 Tools 功能介绍
    • DNS Spoofing Settings
    • Mirror Settings
    • Auto Save Settings
    • Client Process Settings
    • Compose
    • Compose New Request
    • Repeat
    • Advanced Repeat
    • Validate
    • Publish Gist
    • Import/Export Settings
    • Profiles
    • Publish Gist Settings

介绍 Charles

选项栏 - Tools

  • DNS Spoofing Settings (设定 DNS 欺骗)
      如果需要测试域名 但是所使用的是虚拟主机
      为了想要将 IP 位址更改为指定的 DNS 来进行测试
      此时就可以透过 DNS Spoofing 来达成
      将自己的主机名指定给远程地址映射来欺骗 DNS 查找
      当请求通过 Charles 时 将由 DNS 映射为优先
      可以透过 Import/Export 来汇入或汇出设定内容

      "Enable DNS Spoofing":透过 Add 来进一步设定欺骗 DNS 的内容

      当针对列出的域名发出请求时
      Spoof DNS 插件会发现欺骗 IP 将请求重定向到该地址
      e.g. 想要把 www.demo.com 转到 test.com 上
      Host Name:来源处(www.demo.com)
      Address:目的地(test.com)

  • Mirror Settings (设定镜像)
      Mirror 会在浏览时将接收到的回传内容复制一份 并保存在指定的路径下
      可以透过 Import/Export 来汇入或汇出设定内容

      "Enable Mirror":启用镜像所有或指定回传
      "Only for selected locations":透过 Add 来进一步设定指定站点
      "Save to":指定的存放的路径

      每个站点匹配包含 Protocol, Host, Port, Path 与 Query

    • 温馨提醒
      • 如果收到相同 URL 的两个响应,则前面的同名文件将被覆盖,确保响应内容将始终是最新的。
      • 启用 Mirror 後,任何压缩或编码的响应将被解压缩或解码。
      • Mirror 不受上一篇提到的 Recording Settings 的记录限制设定影响,当保存响应有限,将会丢失一些内容。
  • Auto Save Settings (设定自动保存)
      如果想让 Charles 长时间监控网络活动
      并且希望将记录分解为可管理的单元
      或者避免因数据量过大而可能出现的内存不足的情况
      这个时候 Auto Save 将非常有用
      Auto Save 会按设定的时间间隔自动保存和清除记录会话
      可以透过 Import/Export 来汇入或汇出设定内容

      "Enable Auto Save":启动自动保存
      "Save interval":自动保存的时间间隔(分钟)
      "Save to":指定的存放的路径
      "Enable on startup":启动 Charles 时保存
      "Start on a multiple of the Save interval":从保存间隔的倍数开始
        e.g. 保存时间间隔设定为15分钟
        启动该功能为10:10,则第一次保存时间将为10:15
        尔後则为每15分钟保存一次
      "Save type":透过下拉式选单选择保存格式

  • Client Process Settings (设定客户端进程)
      如果想要查看不确定的原始进程请求
      则可以透过启用 Client Process 来达成
      Charles 将会显示发出请求的本地客户端进程的名称
      可以透过每个请求内的 Notes 区块中来查看
      可以透过 Import/Export 来汇入或汇出设定内容

      "Enable Client Process":启动 Client 端进程
      "Only for selected locations":透过 Add 来进一步设定指定站点

      每个站点匹配包含 Protocol, Host, Port, Path 与 Query

  • Compose (修改请求)
      Compose 可以在原有的请求基础上进行修改
      包括了 URL, Method, Protocol version
      该请求发送後,可以对该请求再次修改

  • Compose New Request (新增请求)
      Compose New 可以无到有新增一个请求
      可设定的内容有 URL, Method, Content type, Protocol version
      该请求发送後,可以对该请求再次修改

  • Repeat (重复请求)
      如果想要测试更改後端後在浏览器中重复请求的内容
      透过 Repeat 重复请 将节省大量精力
      Repeat 可以选择一个请求并重复发送到服务器
      重复请求是在 Charles 内部完成的
      因此该响应仅能在 Charles 中查看 无法在浏览器中查看

  • Advanced Repeat (进阶重复请求)
      Advanced Repeat 扩展了 Repeat 功能
      提供了迭代次数和并发数的选项 对於负载测试非常实用

      "Iterations":迭代次数
      "Concurrency":并发数
      "Repeat delay (ms)":重复的延迟时间也可以使用固定范围的时间

  • Validate (验证) Comet

  • Publish Gist (发布 Gist)
      Publish Gist 可以将将所选请求和响应透过 Gist 发布
      默认情况下 Gist 将匿名发布 (也就是说发布後将无法删除)
      如果尚未设定任何内容使用该功能 将会显示资讯

      可以在 Publish Gist Settings 中授权 Charles 使用 GitHub 帐户进行发布
      等等会详细介绍 Publish Gist Settings

  • Import/Export Settings (导入/导出设置)
      可以透过 Import/Export 来汇入或汇出选定或是全部的设定内容
      主要分成了三大块 包含了 Proxy, Tools, Preferences

  • Profiles (配置文件)
      当有不同的设定配置想要进行切换
      除了透过 Import/Export 的方式之外
      还可以透过设定 Profiles 来选择最後设定的内容
      可以透过 Add 来新增配置文件的纪录点
      被选定的 Active 将会记录任何更改的设定内容 (可以想像成游戏存挡点)
      但是为了确保重要的配置不会遗失 还是 Export 一份会比较妥当

  • Publish Gist Settings (设定发布要点)
      在使用上面提到的 Publish Gist 之前
      必须先授权 Charles 使用您的 GitHub 帐户发布 Gists
      点击 Authorize 按钮後 将会 GitHub.com 完成授予
      可以透过 Import/Export 来汇入或汇出设定内容

      "Publish as":发布时是否公开
      "Publish limit (MB)":发布的内容大小限制


结尾

这周的内容还是在介绍 Charles 的 Tools 选项栏中的功能
因为内容过多所以将 Tools 的分享内容给拆分了两个部分
而在这周小弟把 Tools 後半段的功能也分享完毕了
下周将会介绍 mobile 的封包拦截使用方式

如果介绍的内容可能有遗漏或是错误,还请各位大哥大姐提点
小弟将继续往下周迈进。 ─=≡Σ((( つ•̀ω•́)つ


参考文献

官方网站 (载点)


<<:  Week36 - 用 Apollo 快速架设 GraphQL Server [Server的终局之战系列]

>>:  JS 逻辑运算子及函式预设值 DAY56

[ Day 29 ] 实作一个 React.js 网站 5/5

今天是实作 React.js 网站的最後一篇介绍了,这篇会大量的使用到 React Hooks 的...

[01] 笔记走向

大家好,这边是个人制作telegram时研究api和开发文件之後整理起来的文件 telegram 有...

【没钱买ps,PyQt自己写】Day 18 / Project 使用 QTimer,自制码表(计时器) PyQt5 stopwatch DIY

看完这篇文章你会得到的成果图 前言 这篇我们要来学一个新的东西 QTimer! QTimer 是独立...

【DAY 22】Algorithm - Insertion sort 插入排序法

前面我们提过了 Bubble sort,这次我们要来从题目来看另一种排序的演算法 —— Insert...

JS 22 - 探险时间!深入查询物件的所有子属性!

大家好! 如果要深入查询一个多层物件,一般都是用 Object.keys 等方法,今天就是要简化这样...