charles多线程恳求 (charles恳求报文)

一、背景

抓包工具的使用,是测试工作中高频使用必备的技能之一,charles因其功能强大,页面清爽,成为了目前主流且非常好用的抓包工具。

但会抓包只是第一步,抓到恳求之后,能对恳求做对应的动手,以满足我们不同测试场景的需求,才是核心难点。因此今天主要是charles的进阶使用技能讲解,主要包括以下几点:

  • 如何过滤恳求
  • 如何串改恳求入参&响应结果
  • 如何模拟恳求上行/下行超时
  • 如何模拟弱网环境

二、过滤恳求

运行Charles抓包后,我们所有的网络恳求都会显示在Charles页面上,恳求太多,不方便找到自己关注的恳求:

charles怎么设置弱网环境,charles如何断点修改恳求

这个时候就需求用到过滤恳求这个功能,在下方“Filter” 文本框内输入你关注的恳求的域名,这样页面上就只会展示该域名相关的恳求信息了:

charles怎么设置弱网环境,charles如何断点修改恳求

三、临时串改恳求

很多时候我们需求串改恳求的入参、响应内容,以达到想要的测试效果。有多种方式可以达到串改恳求的效果,如果是每次都临时改造入参、响应内容,那么可以使用断点。在恳求上鼠标右键,然后选择“Breakpoints”:

charles怎么设置弱网环境,charles如何断点修改恳求

然后你会发现工具栏的断点图标变为了红色,表示断点已启用:

charles怎么设置弱网环境,charles如何断点修改恳求

此时我们再次访问草料二维码的登录页面,charles则会给该恳求打上断点,拦截该恳求。首先弹出的修改入参页面:

charles怎么设置弱网环境,charles如何断点修改恳求

有3个按钮,分别的作用是:

  • Cancel,表示不修改入参,跳过修改入参,直接进入修改响应内容页面
  • Abort,表示取消该次恳求,本次登录恳求会失败
  • Execute,表示履行本次的修改内容,然后跳转进入到下一步“修改响应内容页面”

比如我们本次将登录窗口的文案从“微信扫码登录”改为“微信扫码登录被串改啦哈哈”:

charles怎么设置弱网环境,charles如何断点修改恳求

点击Execute,履行本次修改,查看修改后的效果,会发现登录窗口文案确实被修改了:

charles怎么设置弱网环境,charles如何断点修改恳求

四、长期串改恳求

打断点的方式适合每次临时手动修改恳求入参和响应,但有的时候,我们不想每次都手动修改,想让某个恳求一直自动被串改,这个时候就需求用到“重写”功能。

同样是登录恳求,我们在charles菜单栏选择Tool > Rewrite…

charles怎么设置弱网环境,charles如何断点修改恳求

然后勾选上“Enable Rewrite”,添加一个规则,比如我们取名叫“changeLogin”,填写我们要修改的恳求是哪一个恳求:

charles怎么设置弱网环境,charles如何断点修改恳求

然后再添加要修改的内容是request还是response,本次我们修改response,将response中body中的“微信扫码登录”文案修改为“我试试微信登录啊啊”:

charles怎么设置弱网环境,charles如何断点修改恳求

点击OK保存好之后,重新恳求草料二维码登录页面,会发现登录页面的文案已被修改

charles怎么设置弱网环境,charles如何断点修改恳求

并且多次恳求登录页面,会发现每次页面都被自动修改了,不再需求像打断点的方式每次都手动去修改。如果不想修改恳求了,就在菜单栏选择Tool > Rewrite…>Rewrite Settings页面上取消掉“Enable Rewrite”选项的勾选就行了:

charles怎么设置弱网环境,charles如何断点修改恳求

取消勾选后,再次恳求登录页面,页面恢复正常原样显示啦:

charles怎么设置弱网环境,charles如何断点修改恳求

五、恳求上行下行超时

有时候我们需求测试恳求超时的情况下,程序的表现是否符合预期。超时又分为恳求上行超时和恳求下行超时,通过Charles同样可以实现该功能。做法依然是使用前面说过的断点,给恳求打上断点后,我们可以点击菜单栏的Proxy > Breakpoint Settings…

charles怎么设置弱网环境,charles如何断点修改恳求

在弹出的断点设置窗口上双击恳求,会出现“Edit Breakpoint”窗口,窗口上只勾选"Response", 则表示恳求不拦截,只拦截响应:

charles怎么设置弱网环境,charles如何断点修改恳求

保存后,再次恳求登录,charles收到响应后会拦截,自动跳到修改恳求响应内容界面:

charles怎么设置弱网环境,charles如何断点修改恳求

  • 如果是让它超时,可以停留在这个状态等程序触发超时,或者点【Abort】直接触发恳求失败;
  • 如果想让它等一会再返回或想修改响应结果,可以在合适的时机,点【Execute】;
  • 如果不想拦截了,放过它,就点【Cancel】

登录恳求失败后,页面显示如下:

charles怎么设置弱网环境,charles如何断点修改恳求

同理,如果要测试恳求上行超时,则在断点编辑弹窗页面上只勾选“request”即可:

charles怎么设置弱网环境,charles如何断点修改恳求

六、模拟弱网限流

有时候我们需求测试在网络很差,即通常说的弱网情况下,程序的表现是否符合预期。这个时候同样可以通过Charles来实现该功能。点击菜单栏的Proxy > Throttle Settings…

charles怎么设置弱网环境,charles如何断点修改恳求

勾选“Enable Throttle”, 勾选“Only for selected hosts”,设置对“https://user.cli.im”域名的恳求限流:

charles怎么设置弱网环境,charles如何断点修改恳求

点击Throttle preset下拉选项中预设了一些常用的网速设置,可以直接选择,也可以自己手动在下方去修改设置:

charles怎么设置弱网环境,charles如何断点修改恳求

网络限流的每一项代表的含义,我找了一个中文版帮助大家参照对比理解各选项的意思:

charles怎么设置弱网环境,charles如何断点修改恳求

最后我们来看看弱网后的效果,本次登录恳求总共耗时11.71秒才加载完成:

charles怎么设置弱网环境,charles如何断点修改恳求

=================================以上就是本次的全部内容,如果对你有帮助,麻烦点个赞+收藏+关注,一键三连啦~ 欢迎VX搜索关注我的公众号: 程序员杨叔 ,各类文章都会第一时间在上面发布,持续分享各类测试开发知识干货,你的支持就是作者更新最大的动力。