Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。
主要的功能包括:
- 截取 Http 网络封包。
- 截取 Https 网络封包。
- 重发网络请求,及压力测试。
- 修改网络请求/响应报文。
- 支持模拟慢速网络。
1.http抓包
1.1 将 Charles 设置成系统代理
选择菜单中的 “Proxy” –> “macOS Proxy”
1.2 Charles 设置代理端口
选择菜单中的 “Proxy” –> “Proxy Settings”
1.3 获取 Charles 运行所在电脑的 IP 地址
选择菜单的 “Help”–>“Local IP Address”
1.4设置手机HTTP代理
保证手机/Charles处于同于WIFI环境下,
在 iPhone 的 “ 设置 ”–>“ 无线局域网 ” 中,
当前连接的 wifi 名,通过点击右边的详情键,手动配置http代理,并保存设置
服务器:上边获取的ip地址
端口:8888
1.5Charles允许设备接入
设置好代理,打开iphone上的任意需要网络通讯的程序,就能看到Charles弹出请求连接的,点击“Allow”,
此时手机中的http请求在Charles中,就可以正常抓包;
2.https抓包
在http抓包的基础上,Mac/iPhone都需要安装证书
2.1 Mac安装 Charles 的 CA 证书
2.1.1安装证书
选择 “Help” –> “SSL Proxying” –> “Install Charles Root Certificate”
2.1.2信任证书
钥匙串中双击Charles Proxy CA,选择“始终信任”,关闭证书;
2.2 iPhone安装 Charles 的 CA 证书
选择菜单 “Help” –> “SSL Proxying” –> “Install Charles Root Certificate on a Mobile Device or Remote Browser”
2.2.1下载证书
使用手机浏览器访问chls.pro/ssl 下载CA 证书
此时需确保设备已经使用Charles作为代理,否则没有下载提示
2.2.2安装证书
在 iPhone 的 “ 设置 ”–>“通用”–>“描述文件” 中,点击Charles Proxy CA 安装,通过后证书显示“已验证”
2.2.3信任证书
对于iOS 11以后还需要根证书信任
在 iPhone 的 “ 设置 ”–>“通用”–>“关于本机”–>“证书信任设置” 中,对Charles Proxy CA启动完全信任
2.3 Charles 设置https代理端口
选择菜单中的 “Proxy” –> “SSL Proxy Settings”
此时就可以尝试https的抓包
需要注意的是,Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成 127.0.0.1:8888 也可达到相同效果。
3.请求重发,及压力测试
右键选择网络请求->“Repeat”
压力测试->“Repeat Advanced”,在弹窗中选择重发次数及并发线程数。
4.修改网络请求/响应报文
右键选择网络请求->“Breakpoint”,当触发该请求时,
4.1修改请求报文
4.2修改响应报文
5.模拟慢速网络
在 Charles 的菜单上,选择 “Proxy”–>“Throttle Setting”,勾选“Enable Throttling”