新手区 Charles 使用

xinxi · August 09, 2018 · Last by liyang9 replied at September 08, 2018 · 2129 hits

简介

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数据、制造异常场景.

共收到 3 条回复 时间 点赞

给你点个赞

不错,点赞!

厉害厉害~

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up