使用 Charles 对电脑和手机进行抓包

使用 Charles 对电脑和手机进行抓包

Charles 简介

Charles 是一款 HTTP 代理/ HTTP 监听/ 方向代理服务器软件。开发人员可以使用 Charles 看到计算机和互联网之间的 HTTP 和 HTTPS 信息。包括请求,响应和 HTTP 请求头(Cookie和缓存信息).

安装和使用 Charles

点击链接 https://www.charlesproxy.com/download/ 下载对应的版本进行安装

macOS 版本为例:

  • 下载 dmg 文件 点击此处可下载4.5.6版本
  • 双击打开 dmg 文件,点击 accept 然后把应用文件拖动到 Applications 目录。
  • 随后就可以在启动台打开 Charles。
  • 启动 Charles 后会出现如下弹窗索取权限,点击Grant Privileges 同意后输入密码同意授权。
    automagic
  • 随后勾选 Proxy - macOS Proxy 启动系统代理。然后使用浏览器访问百度就可以在左侧看到我们刚才请求百度的 HTTP 请求信息。
    macOS Proxy
    Charles

安装 SSL 证书

进过以上步骤安装后可以看到百度的请求下面出现 unknown,原因是百度使用的是 HTTPS 使用 SSL 经过加密传输,我们只需安装上 Charles 的证书即可获取到请求信息。

选择 Help - SSL Proxying - Install Charles Root Certificate
Install certificate
点击之后会弹出一个添加证书的弹窗选择添加即可
Add certificate
添加之后我们打开钥匙串访问这个系统软件,在右上方搜索 Charles 就可以找到刚才安装的证书,安装之后是不信任的证书。
钥匙串访问
双击安装的证书,点开信任一栏,选择始终信任,然后关闭窗口输入密码。如图所示:
信任证书

配置 SSL 代理

进入 Proxy - SSL Proxying Settings 点击 Add 添加需要监听的域名和端口,支持 * 通配符 SSL 通常是 443 端口。
添加 SSL 代理

这里我们添加两个配置, 即可应用绝大多数 HTTPS 请求,添加完成之后就可以愉快的抓取 HTTPS 请求了。

  • *:443
  • *:*
    SSL Proxying Settings

再次访问百度点开请求路径选择 Contents 一栏就可以请求和响应信息。
Charles

抓包IOS手机

配置代理

首先确保手机和电脑出于同一网络内,点击 Help - Local IP Address 查看电脑IP,点击 Proxy - Proxy Settings 查看代理端口默认是 8888。

打开手机进入 设置 - 无线局域网 - 点击已连接上WI-FI右侧的感叹号。(确保电脑和手机处于局域网内!)
滑倒最下面点击 配置代理 选择手动,填入 IP 和 端口信息。如下图所示:
IOS配置代理

随后 Charles 会弹出一个连接请求点击 Allow (如果点击到了 Deny 请重启 Charles)

打开手机浏览器访问百度之后会提示 此连接非私人连接 是因为我们手机还未安装 Charles 的证书。

IOS 安装 Charles 证书

打开 Charles 选择 Help - SSL - Install Charles Root Certificate on a Mobile Device or Remote Browser

然后手机使用 Safari 浏览器打开 chls.pro/ssl 点击允许安装描述文件。确保设备处于局域网下并配置代理正确。

随后手机进入 设置 - 通用 - 描述文件 可以看到多了一个 Charles Proxy CA 的描述文件,点击该描述文件,点击右上角的安装。

安装完成后进入 设置 - 通用 - 关于本机 - 证书信任设置(最下面) 点击信任 Charles Proxy CA 的证书。
至此手机的证书设置就完成了。

抓包微信小程序

如果你只需要抓取手机上的请求可以暂时关闭 Proxy - macOS Proxy(快捷键:Shift + command + P) 减少电脑请求对手机抓包的干扰。

打开一个小程序(本文使用微信指数小程序)
操作小程序发送一个请求
微信指数
打开 Charles 查看请求信息即可看到响应的 json 信息

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×