重要前提:【手机】和【电脑】连接同一个【WIFI】
红米手机查询证书:设置—密码与安全—系统安全—加密与凭证
1、安装Charles的信任证书,并执行“信任操作”
2、查看PC端的 charles 的 IP 和 端口号。
Configure your device to use Charles as its HTTP proxy on 192.168.2.198:8888, then browse to chls.pro/ssl to download and install the certificate.
Note that on iOS 10 and later you must then go into Settings > General > About > Certificate Trust Settings and enable the Charles certificate to be trusted.
3、手机设置:WLAN
- 在 WLAN 助理下,进入“指定WIFI”的网络详情界面
- 主机名:PC端的 charles 的 IP 地址
- 端口:PC端的 charles 的 端口号
4、手机下载并安装 charles 的安全证书。
- 手机确认连接了电脑端的代理
- 使用浏览器访问:
chls.pro/ssl
,直接下载(可修改下载的文件名称和存储路径) - 在手机内找到下载的证书文件,直接点击安装(我使用的是百度浏览器)
4.1 android(安卓)客户端安装证书
- 打开Charles,选择help→SSL Proxying→Save Charles Certificate,将证书导入到手机中(导入后直接点击安装证书,提示无法打开)
- 进入手机设置 → 更多设置 → 系统安全 → 从存储设备安装 → 选择charles.pem,点击高级,安装证书即可(常见手机:小米手机,华为手机,需要设置手机锁屏密码)
- 红米9note:进入手机设置 → 更多设置 → 系统安全 → 加密与凭据 → 安装证书 → CA证书
如上述操作设置,使用 Charles 工具可以抓对网络请求抓包了。
但是:只能抓 "http" 方式的请求,那 "https" 方式的请求要如何解决呢?
5、解决https
的抓包问题
-
5.1、Proxy —> SSL Proxy Settings
- 1、勾选【Enable SSL Proxying】
- 2、【Include】—>【add】。host中填【 * 】,port中填【 * 】或【*:443】,表示任务域名的数据
- 3、port:也可以使用指定地址代,如:【 *.paquapp.com:443】(单独过滤方式)
-
5.2、Proxy —> Proxy Settings
- 勾选【Enabling transparent HTTP proxying】
高级操作
6、使用 Charles 模拟弱网(慢网速)
- Proxy —> Throttle Settings 设置网络速度
- 勾选【Enable Throttling】,点击【ok】,即可模拟弱网状态。
7、Breakpoints 断点功能
8、Compose 功能修改 Request
9、Rewrite重写功能
10、Map映射功能
- 设置路径:Tools —> Map Local / Map Remote
- Map Remote(将匹配的请求映射到另一个远程URL)
- Map Local:将匹配的请求映射到本地文件
1、在指定的接口上,右键选择:Save Response...,将接口返回的数据以 JSON 格式存储到本地(目的:保存数据格式,修改指定的部分数据,达到测试业务的需求。也可以在 Tools —> Map Local 动态创建。)
2、在指定的接口上,右键选择:Map Local...,打开:Edit Mapping —> 清空【Query】—>【Local Path】—>【choose】选择保存在本地的 JSON 数据(该JSON数据可以根据自己的需求修改)
3、查看 Map Local 配置:Tools —> Map Local,打开:Map Local Settings,勾选:Enable Map Local —> ok
4、再次请求接口,通过 charles 工具的帮助,就可以完成修改指定数据的操作了。
11、Repeat 重试功能
拓展说明
- 在Android7.0及以上系统中,HTTPS抓包可能会失败。因为处于安全的考虑,Android7.0及以上,系统默认只会信任系统(System)级别的证书,不再信任用户添加的证书(User),也就是说上面我们在设备上安装的 Charles 根证书,系统不再信任。
- 为了安全起见,一般我们只在 Debug 版本允许抓包,正式版本不应该允许抓包。可以 AndroidManifest.xml 文件中配置安全策略 (详情可以参考官方文档:https://developer.android.com/training/articles/security-config.html)
- Proxy —> Access Control Settings,可以查看已经允许抓包的手机 IP 地址。如果在手机第一次连接 Charles 的时候,你点击了拒绝连接,也可以通过此处再次添加。