Charles
1. 介绍
Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当程序连接Charles的代理访问互联网时,Charles可以监控这个程序发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request,response和HTTP headers (包含cookies与caching信息)。
主要功能
- 支持SSL代理。可以截取分析SSL的请求。
- 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
- 支持AJAX调试。可以自动将json或xml数据格式化,方便查看。
- 支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。
- 支持重发网络请求,方便后端调试。
- 支持修改网络请求参数。
- 支持网络请求的截获并动态修改。
- 检查HTML,CSS和RSS内容是否符合W3C标准。
2. 使用
HTTPS抓包需要安装证书,非本机抓包需要设置代理。
2.1. 设置代理
本机抓包跳过。
Proxy -> Proxy Settings -> Windows -> Enable Windows Proxy
Image 将需被代理设备与代理设备连接至同一局域网下,设置HTTP代理为本机IP地址+代理端口(默认8888,可在上一个截图的Proxies中修改)
Image 允许设备。
Image
2.2. 安装证书
仅HTTP抓包跳过。
如果安装后仍无法抓到HTTPS的明文,尝试重启Charles。
开启SSL代理设置
本机安装证书
打开Help -> SSL Proxying -> Install Charles Root Certificate,安装证书。

非本机安装证书
被代理端完成上述步骤后,访问http://chls.pro/ssl
安装证书。
具体安装步骤因系统而异,网上检索即可。关键字:CA证书安装 + 系统名。一般在安全设置下。

2.3. 抓包
访问网页或者打开APP,抓取包的信息。

3. 进阶
3.1. 界面

抓到的包的请求地址都会列在左侧,在左侧中,Structure表示结构化的,会按照请求地址分类,Sequence会按照请求的顺序排序。同时可以用Filter过滤器进行过滤。
右侧展示一些总览、请求、响应以及速度等信息。
需要打开录制(红点)才能嗅探到。开启SSL能够嗅探HTTPS请求的内容。
3.2. SSL代理
同上。
3.3. 弱网
在当今移动互联网盛行的时代,网络的形态除了有线连接,还有2G/3G/Edge/4G/Wifi等多种手机网络连接方式。不同的协议、不同的制式、不同的速率,使移动应用运行的场景更加丰富。
从测试角度来说,需要额外关注的场景就远不止断网、网络故障等情况了。对于弱网的数据定义,不同的应用所界定的含义是不一样且不清晰的,不仅要考虑各类型网络最低速率,还要结合业务场景和应用类型去划分。按照移动的特性来说,一般应用低于2G速率的都属于弱网,也可以将3G划分为弱网。除此之外,弱信号的Wifi通常也会被纳入到弱网测试场景中。
3.4. 断点
配置需要断点调试的地址以及方式(请求、响应等信息)Proxy -> BreakPoint Settings (可选)
打开断点(六边形小红点)。
发送请求,即可看到断点信息。
Image 在这里可以查看和修改请求和响应的信息,然后进行取消、终止和放行操作。
3.5. 构建请求
选中原来的请求,点击小钢笔的图标,就可以在原来请求的基础上构建一个新的请求。这里和打断点差不多,可以定义请求的字段、地址、内容等。
3.6. 其他工具
Tools下有其他的工具,比如禁用Cookies、不允许缓存、请求映射(将匹配的请求的地址转到另一个地址上,适合调试)等等,都比较简洁易懂,故不再赘述。
4. 注意点
- 如开启SSL,则会使用Charles提供的根证书,因证书系本地证书,不受信任所以会弹出错误提示,继续访问即可。