Charles 是移动开发和移动端测试时常用的网络封包截取工具,通过网络截取封包来分析以及调试与服务器端的网络通讯协议。
Charles 是一款基于 HTTP 协议的代理服务器,特点:跨平台、半免费。 主要功能点:
支持截取 Http 和 Https 请求的网络包支持模拟慢速网络支持修改网络请求值或返回值支持网络截取的动态修改支持重发网络请求确保手机和自己的电脑连接的是同一个网络。
Mac 端设置: 1) 关掉 Mac 端的防火墙。 2)点击 Proxy -> Proxy Settings 打开 Charles 的代理设置功能弹窗,填入代理端口(端口默认为 8888,如果端口没有冲突不用修改),勾选 Enable transparent HTTP proxying。 3)如果不需要抓取Mac的请求,可以取消勾选 Proxy -> macOS Proxy。
手机端配置: 1)进行手机端设置首先需要获取 Mac 的 IP 地址,查看电脑 IP 的方式:
通过 Charles 的主菜单 Help -> Local IP Address通过命令行工具输入 ipconfig 查看电脑端的 IP 地址。2)设置代理:打开手机的 WIFI 代理设置,输入电脑 IP 和 Charles 的代理端口。
设置完成之后,在手机上进行一次任何网络请求,就可以看到请求连接 Charles 的确认弹窗,点击 Allow 即可完成设置。 如果误点 “Deny”,手机无法进行网络请求,主要有两种处理办法: 1、关闭 Charles 重新启动,然后重新发起请求即可 2、点击 Proxy -> Access Control Settings 打开权限控制设置界面手动设置IP即可,如果想允许所有手机访问,添加0.0.0.0/0即可允许所有IPv4的请求,添加::/0即可允许所有IPv6的请求
抓取 HTTPS 网络封包之前还需要在 HTTP 设置的基础上完成SSL证书的设置,设置过程如下:
Mac 安装 Charles 证书 1)通过菜单 Help -> SSL Proxying -> Install Charles Root Certificate 安装证书。 2)通过菜单 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser 手动安装证书。 3)设置 SSL 代理 点击 Proxy -> SSL Proxy Settings 打开 SSL 代理设置窗口,勾选 Enable SSL proxying。如果设置*:443表示截取所有的 HTTPS 请求 移动端安装 Charles 证书 1)手机和电脑连接同一网络后,浏览器访问 chls.pro/ssl 下载并安装证书。 2)小米手机6的安装方式参考博客:小米6–安装Charles证书 3)苹果手机安装完成之后,部分系统需要在“设置->通用->关于本地->证书信任设置”中完成证书的信任设置完成之后,就可以进行 HTTPS 抓包了。1、模拟慢速网络 需要使用弱网环境进行测试时,可以借助 Charles 的 Throttling 功能,Proxy -> Throttle Settings 和 Proxy -> Start Throttling 配合使用 2、断点 需要对某一请求的请求参数或者返回值做简单的修改时,可以通过 Charles 的 Breakpoints 功能实现,Proxy -> Breakpoints Settings 和Proxy -> Enable Breakpoints 配合使用,不过需要注意的是一般要快速修改才可以成功,手速慢可能会有超时等多种情况导致修改不生效,重写(Rewrite)功能(使用看后面介绍)可以实现请求参数和返回值的修改。 3、Map 功能
Tools -> Map Remote 功能是将特定的网络请求转向指定的某一网络请求,设置时需要指定源网络请求地址以及目标网络请求地址 Tools -> Map Local 功能是将特定的网络请求转向本地文件,把服务端返回数据存储到本地文件,进行对应规则的修改之后可以实现对客户端兼容性、健壮性等的测试 4、Rewrite功能 Tools -> Rewrite 支持删除、修改、增加参数(head、body、url、response等) 5、重发请求 通过 Repeat 功能可以对服务器进行简单的压力测试,Charles 拦截的请求右键选择Repeat执行一次重发请求,选择 Repeat Advanced 进行设置并发数以及每个请求的请求次数等。6、模拟发送请求
Tools -> Compose 自己主动模拟发送请求,需要设置请求域名 直接模拟发送 Charles 拦截的请求