本教程演示在Mac OS Monterey 12.2.1版本的操作系统上,使用的Charles的版本是1.9.56,模拟器为网易MuMu模拟器,版本号4.6.2。
Charles的设置
相关软件的安装此处不再展开描述,正常来说,安装Charles和MuMu模拟器(大家也可以选用自己熟悉的模拟器)的过程是比较顺利的,如果安装过程碰到困难,可以自行搜索错误信息解决。软件安装好以后,打开Charles,并依次选择Proxy -> macOS Proxy,这时Charles都会窃听笔记本的所有网路恳求,用浏览器随意访问几个网站,会听到如下图所示的界面。
区域①显示了不同的恳求地址的数据包,点击区域②的按键可用于消除区域①的内容,点击区域③的按键可用于控制开始抓包和暂停抓包,点击区域④的按键可用于开始和暂停SSL代理。
我们注意到,区域①中的每一个网址都是被折叠上去了,随便展开某个网址,然后点击其中的某条数据(也就是一次网路恳求),可以在右部听到这个恳求的详尽信息,如下图所示。
在上图中我们似乎听到了一个不太友好的标志,在这个域名下的三个网路恳求都是一个黑色的,后面跟随。这时假若用浏览器访问csdn的官网的话,正常情况下是访问不了的,它会提示你联接是不安全的,这是因为Charles默认只能代理http类型的恳求,而对csdn的访问是https类型的,因此这些访问会被严禁。
上述问题的解决方案是安装CA证书。在Charles中,依次点击Help -> SSL Proxying -> Install Charles Root Certificate,如下图所示。
现在我们可以在Certificates中见到Charles代理,默认它是不被信任的,如下图所示。
双击Charles的证书,会弹出一个新的窗口,将这个窗口Trust下的所有选项都设为Always Trust,如下图所示。
证书设置完毕以后,再确认一下自己的代理设置是否正确。依次点击Proxy -> Proxy Settings,然后设置代理的端口,默认为8888(需要保证这个端口没有被其它应用程序占用),并且勾选Support HTTP/2和Enable transparent HTTP proxying选项,如下图所示。
通过前面的设置,Charles应当早已可以抓到http请求的数据包了,但若果想要抓取https的数据包,还须要进一步的设置。依次选择Proxy -> SSL Proxying Settings,在弹出的窗口中勾选Enable SSL Proxying选项,并在Include中添加要抓取什么Host和Port的网路恳求,如果不是百分百的确定,可以将这两项都设置为*,表示抓取所有的数据流,如下图所示。
现在我们回到Charles的主界面中,为了美观起见,先点一下区域②的清理按键,将之前抓到的包都去除一下。然后再用浏览器访问csdn官网,如果之前都配置正确的话,此时就早已可以正常访问了,Charles抓到的包如下图所示。
如果抓取某个地址的数据流有问题,那么可以通过Notes选项卡来查看提示信息。假如我没有进行SSL Proxying Settings这一步,那么浏览器可以正常上网,但是Chales却不能正常抓取数据包。比如访问,会发觉抓取到的数据名称为,在Overview选项卡中有Notes信息,当然也可以点击单独的Notes选项卡来查看相关信息,如下图所示。
在Notes给出的信息中,已经很明晰的告诉我们了,对当前访问的host,SSL代理不可用,你可以在代理设置中激活SSL代理,并且设置须要走代理的host。
模拟器的设置
到目前为止,Charles早已可以在笔记本上抓包了,但我们的最终目的是抓取手机APP上的数据包,因此还须要继续设置。在模拟器中安装Android操作系统时须要注意,因为安卓7.0以后对第三方证书降低了限制,会导致证书不起作用,因此须要安装6.0及以下版本的操作系统。我用于本教程演示的是6.0版本的安卓系统。
回到Charles中,依次选择Help -> SSL Proxying -> Install Charles Root Certiticate on a Mobile Device or Remote Browser,会弹出一个窗口,根据前面的提示信息,去模拟器中做相应的操作。
首先在模拟器中设置代理,依次点击设置 -> WLAN,然后长按网路名称,会弹出一个窗口,选择此窗口中的更改网路,如下图所示。
将代理形式设置为自动,代理服务器主机名和端口设置为之前提示信息中显示的114.212.22.215和8888,如下图所示。
保存以后,打开模拟器中的浏览器,访问chls.pro/ssl,此时会在Charles中弹出一个提示窗,询问你是否容许联接,点击Allow。
如果一切设置正常,现在模拟器中的浏览器会下载安全证书。打开下载的证书,并且给它起个名子,然后点击确定即可完成证书的安装。此时可能会让你设置屏保密码,按照提示设置即可。
效果演示
证书安装成功以后,在模拟器的浏览器中瞧瞧能不能打开百度首页,如果可以,那么所有的配置就都完成了,如果不可以,那么须要再回到之前的步骤中找缘由。
现在在模拟器中的所有网路恳求都能被Charles捕获。首先点一下扫帚形状的清理按键,然后在模拟器的浏览器中访问bilibili.com,在Charles中可以捕获到此过程的数据流。
到此为止,已经实现了手机APP的抓包操作。关于Charles界面右部的这几个选项卡,即Overview,Contents,Summary,Chart,Notes等的使用,大家可以从网路上搜索其它资料做更进一步的学习。
有问题?