在平时的开发与测试过程中,总会遇到网络问题。我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。
准备工作
由于本人是 iPhone 手机,这里以 iPhone 为主 (ps: 主要是安卓种类繁多,说不过来)
- iPhone + Charles(抓包工具)
- 抓包
iPhone + Charles(抓包工具)
安装 Charles
根据自己的系统,从 Charles 官网 下载,安装即可。
安装完成后,配置 Charles 相关。
截取手机上的网络数据包
Charles 通常用来截取本地上的网络数据包,但是当我们需要时,我们也可以用来截取其它设备上的网络请求。下面我就以 iPhone 为例,讲解如何进行相应操作。
设置系统 Charles
启动 Charles 的代理功能,在 Charles 中的 Proxy -> Proxy Setting
,具体设置如下图:
设置 iPhone HTTP 代理
首先,获取当前 Mac 的 IP 地址
- option/alt + 鼠标左键点击 Wi-Fi 图标,会展示 IP 地址
- Charles 的菜单中
Help -> Local IP Address
, 也能获取当前 IP 地址 (推荐)
接下来,让 Mac 作为 iPhone 的代理
设置 -> 无线局域网 -> 你 Wi-Fi 名称 -> 详情 -> HTTP 代理 -> 配置代理
- 进到代理配置页,将 “关闭” 切换为 “手动”。
- 将你获取到的 IP 填入“服务器”的选项中
- 端口填入 8080
- 记得点击
存储
,否则代理信息不会保存
[图片上传失败...(image-fa58cf-1535271871494)]
此时, Mac 已经作为了 iPhone 的 HTTP 代理。但是,并不能截取到 HTTPS,因此,还需要进行额外的配置,使其可以截取 HTTPS
请注意,当 Charles 弹出如下图弹框时,请一定选择 Allow !!!! 请一定选择 Allow !!!! 请一定选择 Allow!!!!
image
设置 iPhone HTTPS 代理
HTTPS 需要进行如下额外配置:
- Mac 安装证书
- 手机安装证书
- Mac 配置 HTTPS 代理
Mac 安装证书
找到 Charles 菜单,选择 Help -> SSL Proxying -> Install Charles Root Certificate
,然后输入系统的帐号密码,即可在 钥匙串访问
中看到添加好的证书。
打开钥匙串访问,点击 登录 -> 证书
,找到如下证书:
如果该证书不被用户信任,则需要修改信任等级,双击证书根据下图进行修改:
image
至此,Mac 的证书安装完毕。
iPhone 安装证书
找到 Charles 菜单,选择 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser
会弹出如下弹窗:
image
使用已经进行 HTTP 代理的 iPhone 的 Safari 访问 chls.pro/ssl , 安装证书即可。
注意: iOS 10.3 以上需要针对
通用 -> 关于本机 -> 证书信任设置 -> Charles Proxy Custom Root Certification
进行信任操作,10.3以上必须要做!
Mac 配置 HTTPS 代理
找到 Charles 菜单,选择 Proxy -> SSL Proxying Setting -> SSL Proxying
,图片效果如下:
选择 SSL Proxying Setting 后,具体配置内容如下:
image
网友评论