一、基础
1、Charles简介
中文名青花瓷,是HTTP服务代理器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接受的所有数据。她允许开发者查看所有连接互联网的HTTP通信。
特点:跨平台、有免费版本(启动需要10s、运行只能使用半小时)
2、Charles工作原理
使用前置条件:
1、运行Charles并配置代理
2、在客户端配置代理和代理端口
使用步骤:
1、客户端发送请求
2、Charles接受情况再发送给服务器
3、服务端返回请求结果给Charles
4、由Charles转发给客户端
3、Charles主要功能
支持HTTP和HTTPS的代理
支持流量控制(用于模拟弱网)
支持接口并发请求(用于简单的性能测试)
支持重发网络请求(用于接口测试,用的比较少)
支持断点调试功能(发送或接收时修改请求/返回信息,模拟请求和响应)
4、Charles优点
相比fiddler:
1、支持多系统
2、支持按域名和按接口查看报文
3、支持反向代理
4、支持网络限速、选择网络类型
5、可以解析AMF协议——不常用
二、安装
1、Charles安装
下载:[https://www.charlesproxy.com/download/](https://www.charlesproxy.com/download/)
2、安装证书
3、Charles组件学习
三、代理设置
1、 Charles开启代理
Proxy → Proxy Settings
1)端口号,默认8888,如果有冲突,则需要修改
2)点击OK ,打开代理
2 Windows代理设置 ——设置后就能用charles抓取windows上的数据
1、chrome 浏览器输入Chrome://seetting ,在搜索栏中输入【代理】,点击【打开您计算机的代理设置】
2、在打开的Windows代理设置页面中,打开【使用代理服务器】,并填写代理服务器地址及端口号即可(即 charles所在机器的ip和端口号)。
备注:如果charles和客户端在同一台电脑,默认情况下电脑上已经设置好代理了;如果charles和客户端不在同一台电脑,一定要把电脑上的代理服务器地址改为charles所在电脑的ip和端口号。
3、MacOs代理设置 ——设置后就能用charles抓取MacOs上的数据
3.1 常规设置代理方式
1、系统偏好设置 → 网络 → 高级 → 代理
2、勾选【Web代理(HTTP)】 → 输入web代理服务器地址和端口 (即 charles所在机器的ip和端口号)
3、勾选【安全Web代理(HTTPS)】 → 输入web代理服务器地址和端口
3.2 MocOs快捷代理设置
在Charles的Proxy → macOS Proxy
备注:如果charles和客户端在同一台电脑,快捷代理可以代替代理设置。
tips:快速查看Charles所在服务器的ip地址: 【Help → Local Adress】
四、PC端抓HTTPS包
https是把http进行了封装,把http的报文进行加密了。
不配置的话,能显示https域名,但请求为unknown,报文内容都是乱码。
解决方案:安装SSL证书
Windows抓取https配置
1、Windows安装证书
2、 macOS抓取https配置
3、Charles中https代理配置
五、手机端抓包
手机端配置:
1、确保iOS 设备和Charles服务器在同一个网络下
2、在设置中选中无限局域网 → 网络 → HTTP代理 → 配置代理 → 手动
3、输入Charles服务器的i和端口号 并存储
1、IOS系统设置代理——设置后就能用Charles抓取iOS上的数据:
2、Android系统设置代理 —— 设置后就能用Charles抓取Android上的数据
手机端配置:
1、确保iOS 设备和Charles服务器在同一个网络下
2、设置 - WLAN - 显示高级选项 - 代理 -手动
3、输入Charles服务器的i和端口号 并存储
如果设置后无法抓到https包,则需要安装一下手机端证书
华为手机安装证书如下:
1、浏览器中输入chls.pro/ssl提示下载证书
2、在【设置 - WLAN 更多->高级WLAN设置->安装证书 】安装后,证书的用途选择【VPN和凭证】,不要选择【WLAN】亲测不行。
3、安装成功后即可抓取https包
六、流量配置
1、Proxy → Throttle Setting
2、勾选 Enable Throttling
3、选择对应的网络类型
Bandwidth ——带宽 -- 例如 512kbps
Reliability ——可靠性
Stabillith —— 稳定性
弱网一般用于app测试,看app在弱网情况下会不会闪退、登出等异常。
带宽一般指下载的理疗速度
512kbps(kbps=kb/s)=512/8=64KB/s
1M=1024/8=128KB/s
8M=8*1024/8=1024KB/s
七、断点配置(用于编辑请求参数、编辑请求返回值)
1、选择接口,右键 - 选择“BreakPioints”
有的请求后面有随机数,设置断点后因为随机数不同,可能断不到,此时在【Proxy → BreakPioints Setting】中编辑一下请求,把随机数去掉即可
2、在浏览器中访问这个接口
3、进入断点页面,展示接口请求的信息,此时请求还未发送到服务器
4、“Edit Requset” 编辑请求信息
5、点击“Execute” 执行请求
6、执行后,接口的返回数据也会展示在charles中,不会直接返回浏览器
7、“Edit Response” 编辑服务器的返回信息
8、点击“Execute”,把修改后的返回信息,反馈给浏览器,在浏览器中就能看到自己编辑的返回信息
遇到的问题
问题1、用着好好的,突然有一天无法抓包了
问题原因:charles证书过期了
help→SSL Proxying → Install Charles Root Certificate
解决办法:
1、PC端reset证书、再信任即可
help→SSL Proxying → Reset Charles Root Certificate
2、手机端需要连接到代理、重新下载安装证书、信任证书后使用