新手区 Charles 使用

xinxi · 2018年08月09日 · 最后由 jerrywei 回复于 2020年03月19日 · 2253 次阅读

简介

Charles 是一个 HTTP 代理/ HTTP 监视器/反向代理,使开发人员能够查看其机器和 Internet 之间的所有 HTTP 和 SSL / HTTPS 流量。 这包括请求,响应和 HTTP 标头(包含 cookie 和缓存信息)。

安装

官方下载地址:

下载地址

mac 下载的 dmg 格式,正常安装即可

安装破解

  • 在官方下载的 Charles 是有使用有效期的,所以需要破解.

  • 下载对应版本的 charles.jar(google 搜索),
    我用的 4.0 版本的 Charles

  • cd /Users/xinxi/Desktop/Charles.app/Contents/Java (我本地路径)

  • 把下载 charles.jar 复制到路径下

  • 启动 Charles 后,如果没有等待几秒,说明破解成功

安装 https 证书

  • 由于现在接口都是 https 协议,如果不安装 https 证书,则不能抓包.

  • 在 Android 个别 rom 上,通过手机浏览器下载后不让安装,需要通过电脑先下载 https 证书导入到设备上安装

    • adb push charles-proxy-ssl-proxying-certificate.pem /sdcard
    • 小米手机:设置 --- 更多设置 --- 系统安全 --- 从存储设备安装--SDCard 安装
  • iOS 大于等于 10 系统上,下载安装 https 后,证书默认是未开启的.

    • 手动开启路径:设置->通用->关于本地->证书信任设置->勾选证书
  • charles 设置 443 端口,proxy->ssl proxy setting

基本使用

过滤请求

使用本地数据 (Map Local)

  • 这个功能主要是拦截服务端数据,做本地修改.

  • 复制响应结果中 json 到存储到本地文件中

  • 在本地文件中修改内容

  • 点击接口,选择 Map Local

  • Map To 选择刚才修改过的 json 文件

  • 不需要 Map Local 的时候,在 Tools-Map Local 中把这个接口关闭.

  • Map Local 最合适做客户端接口容错测试,本地 json 按照一定的修复规则,测试客户端不应该崩溃或者测试文案超长等情况

接口重定向 (Map Rmote)

  • 这个功能主要是把接口代理到其他环境上

  • 在 Map Rmote 中写上要代理接口

  • 实例

    • 把电子书详情页接口线上环境重定向到测试环境
    • 其中 body 中有个参数是 bid=3152,但是测试环境没有这个 bid,所以接口查询不到数据

重写 (Rewrite)

  • 重写功能可以删除、修改、增加,head、body、url、response 等参数

  • 位置在 Tools->Rewrite 下,需要增加一个接口地址,增加一个重写规则

  • 接着上实例,把 bid=3152 替换成 1937,此时完成了一次 body 数据重写

断点

  • 断点功能主要修改 request 和 response 内容,这个时候接口是在 Charles 代理层被拦截,还没有实际到手机设备上.

  • 选择接口 - 勾选 BreakPoints-再次请求接口

    • 修改 request 中 body 参数 - 点击 Execute-发送请求

  • 修改 response 中 status code 参数 - 点击 Execute

  • 这个功能比较适合模拟接口 500、超时,客户端接收 response 是有超时时间的,如果修改数据的时间太久,客户端会展示错误页面,那么做断点调试就没有意义了.

模拟发送请求

  • 选择接口右键选择 Compose

  • 修改数据,点击 Execute 按钮发送请求

重发请求 (Repeat)

  • 接口右键选择-Repeat,表示重新发送一次请求

  • 接口右键选择-Repeat Advanced,填写发送的次数,循环发送多次请求

    • Iterations 表示次数
    • Concurrency 表示并发线程数

模式弱网

  • Proxy-Throttle Settings

  • 勾选 Enable Throttling

  • Only for selected 表示仅选择的域名做弱网

  • Throttle preset 表示要模拟的网速,可以改上行和下行带宽,还有丢包率

结语

Charles 功能很强大,熟悉掌握常用技巧,在工作中很方便 mock 数据、制造异常场景.

共收到 4 条回复 时间 点赞

给你点个赞

不错,点赞!

厉害厉害~

我用的 Windows 版本的,台式电脑没有无线网,用的是 USB 的无线网卡,ip 地址会显示两个,一个是以太网一个是无线网卡的。配置的时候提示让我配以太网的那个 ip,但是很明显不行。配置的 wifi 的 ip 就抓不到包,请问有解决的办法吗

需要 登录 後方可回應,如果你還沒有帳號按這裡 注册