• Charles界面介绍及使用方法


    本随笔主要内容:
    一、Charles界面介绍
    二、Charles使用
    1.会话(Repeat、Focus、Compare、黑白名单等)
    2.模拟请求做mock,使用断点、Map或Rewrite
    3.指定hosts
    4.限速测试(模拟网速)
    5.其他可以用的点(Web Interface)
     
     
    在开始之前先介绍界面中一个好用的help工具,点击Help,在Search里搜索内容,会模糊匹配工具栏中包含该字符串的所有内容。鼠标滑过时会展开对应工具的位置,比如下图鼠标停留在New Session上,就展开了File->New Session
    这里没有介绍怎么配置Charles进行抓包,如果要抓包查看另一个博客:http://www.cnblogs.com/meitian/p/7157990.html
     
     
     

    一、Charles界面介绍

     
     

    工具栏的介绍

     

    二、Charles使用

    1.会话(Session)

    会话有两种展示结构:Structure和Sequence
    Structure:按照不同hosts域名分组展示请求
    Sequence:按照请求顺序来展示请求
    在会话上右键查看支持的功能:
     
    用途都比较清晰,着重说明以下几点:
     
    Repeat、Repeat Advanced…:重复执行请求,Repeat Advanced可以指定重复的遍数。这样可以选中多会话,在右侧的chart查看请求的时间等性能
    Focus:在某个域名下邮件点击Focus,会将当前域名放到顶部,没有Focus的域名统一放到下面的Other Hosts下(可以在View->Focused Hosts中统一编辑)
     
     
    黑白名单(可以在Toos->Black List/Write List下统一更改)
    Black List:黑名单中的域名不能联网
    Write List:白名单开启后,只有白名单中的网络可以访问网络,不在白名单中的不能访问网络
    (如果一个域名既在Black List中也在Write List中,则也不能访问网络)
     
    Export:导出会话Session保存到本地,然后下次可以通过File->Open Session打开本地的Session
     
    Compare:左侧列表选择两个Session,右键时会出现该项,可以比对两个请求的入参和出参
     
    Compose:即工具栏上的钢笔的图标,编辑请求然后执行
     
    Breakpoints和Map Remote..、Map Local...后面会详细介绍
     
    针对一个Session的详细信息:
    平时查看入参出参,使用Contents比较方便,在其中也可以切换Text/Form/JSON等来用不同格式查看内容
    Chart项可以用来查看一个请求的性能,当然可以左侧列表选择多Session,然后选择Chart查看多个请求的性能
     
    在选择请求时,他下面也会列出相关请求(比如一个html页面会请求js等信息)。
    TimeLine包含3部分的时间:请求的时间+网络响应延迟的时间+响应的返回时间
     
    通过Ctrl+F查找包含某内容的会话,如下图:
     

    2.模拟请求做mock,使用断点、Map或Rewrite

    第一种情况:只想验证一下server端的请求和结果

    直接在选中请求,点击控制栏上的编辑,然后修改请求后执行即可
     

    第二种情况:app或PC端需要等待server的数据返回

    这种情况直接用上面那种方法是不能回显到PC或APP的,可以通过打断点的方式,或通过Map Remote/Map Local重定向来获得结果
     
    A:通过打断点的方式:
    Session上右键选择Breakpoints,或者通过顶部工具栏的Proxy->Breakpoints Settings来管理断点的请求,需要点开导航栏上的开启断点(Disable Breakpoints)才可以生效断点
     
    当再有符合断点规则(Host、Path、Query)的请求过来时,会自动进入断点页面,断点分为两部分:
    1.请求发到服务器前,此时可以修改request的入参等信息
    2.服务器返回的数据返回给终端(APP或PC)之前,此时可以修改response的内容
     
    B:通过Map Remote
    Map Remote重定向到另一个请求的返回值当做自己的返回值
    可以在Session上右键Map Remote设定规则,或Tools->Map Remote来管理所有Map Remote(勾选Enable Map Remote才会启用)
    请求可以使用通配符*等来匹配,Map To可以是一个接口请求,可以是一个远程文件(js或html文件等)
     
     
    C:通过Map Local
    Map Local使用本地一个文件的内容作为返回值
    可以在Session上右键Map Local设定规则,或Tools->Map Local来管理所有Map Local(勾选Enable Map Local才会启用)
     

    补充一个mock的方法,Rewrite

    在Tools->Rewrite中添加规则,Enable Rewrite勾选才会去走重写
    Rewrite:可以添加规则修改请求的header、参数等各种信息,比Map更灵活,而且针对同一个请求可以添加多个规则,但如果出问题不容易调试
    比如下面的例子,添加了一个叫做测试的规则,右侧Location上面添加要匹配的请求,下面填写重写规则(右面的弹框,Type可以选择 header rules, URL rules, query parameter rules, and body rules)
    重写规则很多,下面这个博客写的还是挺细的,可以参考一下:http://www.cnblogs.com/wonyun/p/5586746.html
     

    3.指定hosts

    有时候要把域名指向某一个固定的IP地址,除了修改PC本机的hosts文件外,也可以在Charles中设置
    Tools->DNS Spoofing Settings中设置hosts
     

    4.限速测试(模拟网速)

    有时测试需要限制网速,在Proxy->Throttle Settings中配置,然后再Proxy->Strat Throttling或工具栏上小乌龟的图标开启或停止限流
     

    其他可以用的点

    Web Interface:在Proxy->Web Interface Settings开启,需要指定匿名可以访问或账号密码访问
    这个其实是通过http://control.charles/来用PC端页面控制Charles,可以清除Session等操作。个人觉得意义不大

  • 相关阅读:
    win10 安装python教程
    nginx http请求无法加载https的css样式
    (第二十天)[js] 写一个验证身份证号的方法
    Linux重启nginx
    (第十一天)[js] 返回到顶部的方法有哪些?把其中一个方法出来
    看了一篇闭包的,推荐一下~
    HTTP状态码
    (第十天)[js] 写一个获取当前url查询字符串中的参数的方法
    (第九天)[js] 写一个判断数据类型的方法
    (第八天)[js] 写一个加密字符串的方法
  • 原文地址:https://www.cnblogs.com/meitian/p/7327088.html
Copyright © 2020-2023  润新知