一、charles原理
- Http进行抓包,对手机设置代理,转发
- 对Https进行抓包,使用的原理就是中间人技术(man-in-the-middle)
Charles会动态生成一个使用自己根证书签名的证书,Charles接收web服务器的证书,而客户端浏览器/客户端 接收Charles生成的证书,以此客户端和Charles之间建立Https连接,Charles和Web服务器之间建立Https连接,实现对Https传输信息的抓包。如果Charles根证书不被信任则无法建立Https连接,所以需要添加Charles根证书为信任证书。
二、charles功能
- APP的每一步操作调用的是哪个接口,请求参数是什么,返回值是什么?(分析包内容,查具体内容,知道字段直接command+F搜索较快)
- 对APP的某一个操作进行debug,mock数据(charles breakpoint功能)
- 切环境(charles map功能 线上→测试环境)
三、charles安装
参考博文:charles之初安装
四、charles意外情况分析
- 手机和电脑需要在同一局域网内,不一定非要是一个IP段,只要是同一个路由器下即可
公司这个比较奇怪,在校园网环境下,保持手机和电脑一个IP段,就能够抓包了;公司处理时需要mac地址,而且不再一个网段,怀疑时网和子网的关系
手机和电脑一个是172和192开头的网段,一个B类IP,一个C类IP,原因待查
需要大象6000帮助,输入核心词条:电脑抓包;有人联系,需要提供电脑的mac地址,网络偏好设置→高级 - charles抓http 的包设置好代理和端口号就可以,端口号:proxy settings...→proxies
- charles抓https的包比较棘手
(1)安装ssl证书到手机设备
注意:每个手机都需要和charles建立映射关系,通过安装证书
前提:必须手机的http代理打开,电脑charles开着
手机浏览器访问 chls.pro/ssl下载证书安装即可
ios信任证书 设置→通用→关于本机→证书信任设置 启用完全信任Charles证书
(2)Charles设置Proxy
Proxy -> SSL Proxying Settings...
勾选Enable SSL Proxying,点击Add
Host设置要抓取的https接口,下面是全匹配
可以填写需要的包的host接口和端口号进行抓包
如:
Host填写:https://api.weibo.cn
Port填写:443
- 抓不到想要的包,
(1)可能需要切长短连接
android&ios摇一摇;不管用的话,android,关于美团-美团图标 连续点击多下
一般切下短连接能抓到lvxing.meituan.com的包?长连接不行,为什么?是因为该包对应的连接是tcp的短连接?留待考证
(2)确定环境
需求是否上线
测试环境or线上环境
test环境和stage