你或许不知道的Charles

52 阅读3分钟

工作的时候经常用Charles抓包,也学到了很多用Charles的很多小技巧,记录一下,说不定在某个时候就能提高自己的工作效率,让自己有多点时间摸鱼(bushi(但事实上是真的))

  • Structure/Sequence
    这个是Charles请求列表的展示形式,可以选择自己习惯的形式

    • Structure(结构)tab里的接口请求按照url维度放在不同的collection中

    • Sequence(顺序)tab里的接口请求按照请求时间分别展示

  • Focus

    右键点击选中的url,点击Focus,会只展示当前url中的所有接口,其余接口url都会放在Other里

  • Ignore

    选择请求-右键-Ignore,这个功能要慎用,点击后Charles不会对这个域名的请求抓包,如果要取消Ignore需要去Proxy-Recording Settings-Exclude里去取消勾选,然后重启Charles才能重新抓到这个url下的请求

  • Map Local
    这个功能可以mock后端返回的接口数据,对想要mock的请求右键,点击Map Local,会出现下面这个弹窗,后续发出的请求数据要和Map From里的一致,响应的内容会和Map To选择的文件内容一致,如果不知道响应内容怎么写,可以对当前右键接口然后Save Response到本地,小修小改之后就能用了

    修改后的效果就像下图一样

  • Map Remote

    Map Remote用来修改请求指向的地址,开发用的可能比较多,经常用于请求的时候指向本地/测试服务器,右键点击需要修改的请求,点击Map Remote,弹窗如下图展示,在Map To的地方输入需要指向的地址,后续的请求就会打到指定的服务器上

  • Breakpoints

    Charles的断点工具,可以调整接口请求的内容和响应的内容,右键点击请求,再点击Breakpoints,后续发出这个请求Charles就会卡在这里

    切换到Edit Request的页面中就可以修改这个请求发出的参数,修改完后点击Execute就会发出请求到服务器,接口响应回来之后就会出现这个页面

    切换到Edit Response就可以修改接口返回的内容,再点击Execute就会把响应的内容返回到客户端,效果如下图

    需要注意的是,如果前端设置了请求超时时间,Breakpoints如果在之中断点很长时间会导致前端超时

  • 重发请求

    选择请求,点击图片中的这个位置

    可以修改请求的方法,url和参数

    点击Execute之后就会发出新请求

  • 节流设置

    Charles的另一个功能就是可以限制请求的速度,来模拟弱网情况下的请求状态

    点击菜单栏Proxy-Throttle Settings,勾选Enable Throttling,保存之后就会对所有请求限制请求速度。如果再勾选Only for selected hosts选项,会让弱网只对其中的url生效

一个小问题

最后有一个小问题,我在用Charles的时候在Proxy-Proxy Settings-macOS里勾选了Enable macOS proxy,在用的时候还可以抓到电脑的请求,但是关掉Charles之后再打开又抓不到电脑请求了,这是咋回事