macOS 使用 Charles 抓包 (HTTPS, 真机, iOS模拟器)

| 实用工具 , macOS

 

内容概览

  • 前言
  • 配置代理
  • 配置根证书
  • 配置 SSL 代理
  • 捕获 HTTPS 请求的内容
  • 配置真机的无线网络
  • 在真机上安装根证书
  • iOS 模拟器
  • 总结

 

前言

 

Charles 是 macOS 上常用的抓包工具,功能非常强大!本文主要讲解如何使用 Charles 捕获 HTTPS 请求的内容以及捕获局域网中的设备上的网络请求。

之前,有一些做开发和测试的朋友问过我,怎么用 Charles 抓 HTTPS 网络请求、怎么用 Charles 抓真机上的网络请求。然而,我没有找到一个可以非常详细地讲解这些内容的教程,所以我打算在别人的教程的基础上自己再写一篇更详细的文章。

现在,Ficow 就尽可能地将内容讲得详细一些,希望本文对大家有所帮助。

还没有安装 Charles 的朋友,可以到 官网下载 试用版,也可以到 xclient.info 去 下载。强烈建议大家支持正版~

 

配置代理

 

启动 Charles,点击菜单栏中的 Proxy 选项:

然后,参照下图配置 HTTP 代理:

点击 OK ,进行下一步。

 

配置根证书

 

点击 Charles 菜单栏中的 Help 选项,然后选择 SSL Proxying 选项中的 Install Charles Root Certificate 选项:

点击 Add 添加根证书到钥匙串中:

此时,钥匙串(Keychain Access)应用会被自动启动。如果没有启动,您可以自己去应用程序列表(LaunchPad)启动:

如果证书数据太多,您可以使用搜索框来搜索 charles。双击 Charles Proxy CA 所在的结果行:

直接将该证书设置为总是信任即可,然后点击关闭。这时候系统会提示您输入密码进行确认,输入确认即可。

 

配置 SSL 代理

 

点击 Charles 菜单栏中的 Proxy 选项,然后点击 SSL Proxying Settings:

如果列表中没有 *:443 项目就需要添加:

点击 Add 添加,Host 为 * ,Port 为 443 :

然后点击 OK,进行下一步。

 

捕获 HTTPS 请求的内容

 

在开始捕获请求之前,请确认是否已经将 Charles 设置为代理。如果是希望捕获系统中的所有请求,就需要开启 macOS Proxy

由于 Firefox 做了特殊处理,如果需要捕获 Firefox(火狐浏览器)中的请求,就需要开启 Mozilla Firefox Proxy

点击 Charles 菜单栏中的 Proxy 选项,开启您需要的代理选项:

也可以通过点击系统状态栏上的 Charles 图标来进行操作:

接下来,点击开始录制按钮(鼠标停留在图标上,您会看到该图标的说明文字):

如果您想清空捕获的结果列表,可以点击录制按钮左边的扫把图标。

然后,如果系统中有正在进行的网络请求,Charles 就会将其记录到列表中:

如果 Charles 捕获到的记录可以展开,并且您可以看到请求的具体信息,即表示 HTTPS 请求可以被正常地捕获和解析(前面的配置都是正确的):

如果捕获的请求太多,您可以通过过滤来查找您感兴趣的请求。先切换到 Sequence 模式,然后在 Filter 输入框中输入您感兴趣的关键字:

点击您感兴趣的结果行,Charles 会默认为您展示 Overview 面板。如果您想查看请求和响应的具体内容,可以点击 Contents 选项:

Contents 面板最常见的使用场景是用于查看请求中的 Headers 和 响应中的 JSON

 

配置真机的无线网络

 

首先,将真机(手机、平板等)和电脑连到同一个局域网(最常见的就是WIFI)。

然后,打开 macOS 的系统设置面板,打开网络控制面板:

比如,本文是通过 WIFI 来演示的:

如上图所示,红色的横线部分标注的就是本机的 IP 地址。这个 IP 地址(如:192.168.8.158)稍后需要用到,请不要关闭这个页面!

接下来请打开真机,比如 iPhone。找到您平时连接 WIFI 的设置页面(通常是:设置 - WLAN),然后点击已连接的 WIFI 右边的配置按钮:

将弹出的页面滑动到最底部,您将看到 HTTP 代理部分的 配置代理(Configure Proxy) 选项,点击该行。

然后,在弹出的页面中选择 手动(Manual)。

在 服务器(Sever) 行中输入您运行 Charles 的电脑的 IP 地址,比如刚刚看到的 192.168.8.158。(请输入您的电脑显示的IP地址,而不是这里的 192.168.8.158)
在 端口(Port) 行中输入最开始配置代理时填写的 8888

最后,点击该页面右上角的保存。接下来,还需要在真机上安装根证书才可以通过 Charles 来捕获真机中的网络请求。

 

在真机上安装根证书

 

接下来,在真机上打开浏览器,比如:iOS 设备就打开 Safari 浏览器(其他浏览器可能没有权限喔!)。

输入网址 http://chls.pro/ssl 并确认。此时,系统会弹出提示框提醒您下载配置文件(configuration profile),点击 允许。此时,配置文件已经下载完毕,您需要到系统设置中安装。

打开 iOS 设备的系统设置,点击通用,然后往下滑动找到配置文件选项并点击(一般在VPN选项的附近)。此时,您会看到已下载的配置文件(DOWNLOADED PROFILE) 中有 Charles Proxy CA 项目。点击该项目,然后点击页面右上角的安装。

最后,您可以用 iOS 设备的 Safari 浏览器打开某个网页,同时您可以查看 Charles 中是否已经捕获该网页的请求。

到这里,您就已经学会了本文讲述的全部内容。恭喜~

iOS 13 及以后的设备,如果遇到 SSL 问题,可能还需要进一步调整设置选项

 

iOS 模拟器

 

如果需要为 iOS 模拟器抓包,就需要在模拟器中安装 Charles 根证书:

最后,还有一点需要特别注意!在开始为模拟器抓包前,先启动 Charles, 再启动 iOS 模拟器!

如果为模拟器抓包失败,就需要检查:

  • 是否已经在模拟器中安装 Charles 根证书;
  • 是否先启动 Charles,然后再启动模拟器(如果有必要,先退出模拟器(Quit)程序再重新启动);

另外,在每次升级大版本的 Xcode 后,往往需要在模拟器中重新安装 Charles 根证书。

 

总结

 

有了 Charles 这样的抓包工具,我们可以很容易地查看网络请求中的内容。无论是在日常的开发测试工作中检查请求参数,还是通过抓包来研究别人的应用如何设计网络请求,这一切都变得那么容易。感谢 Charles !

除了 Charles 之外,我也比较推荐这个简洁的抓包工具:Proxyman。感兴趣的朋友可以试一下喔~

 

参考内容(感谢原文作者):
Mac使用Charles进行HTTPS抓包

 

觉得不错?点个赞呗~

本文链接:macOS 使用 Charles 抓包 (HTTPS, 真机, iOS模拟器)

转载声明:本站文章如无特别说明,皆为原创。转载请注明:Ficow Shen's Blog

评论区(期待你的留言)