开始
最近看了一下Mac的网络转包,发现Charles这款工具挺好用的,配置一下证书可以抓包https, 我抓取得是iOS设备,其他类似
步骤
抓取http
- 打开Charles
- 打开help -> SSL-Proxying -> install Charles root…,如下图位置
- 需要将iOS设备和Mac的连到同一网络,在iOS上设置代理,点击设置-无线局域网下-WiFi名称后的感叹号,配置代理,改为手动,服务器填写上面弹出框的的IP地址,端口填写上面的端口号
- 再在Mac上allow Charles的弹出框即可,这样已经是可以抓取http协议的包了
抓取https
上述步骤一样,只是需要配置证书了
- 在iOS设备上的Safari浏览器中输入链接chls.pro/ssl,下载安装证书
- Charles上需要做额外的设置,点击Proxy->SSL Proxying Settings…如图
添加,host填写*,port填写443,这样就可以抓取所有的https了
问题
https显示红色的<unknown>
如果还是抓取不到,显示红色的unknown, 则还是证书的问题,在iOS设备上的设置中,搜索信任证书设置,将针对根证书启用完成信任勾选即可
如果要抓取Mac上https
在help->ssl-Proxying->install Charles root Certificate 即可
更多可以查看官方文档
抓取原理
Charles利用的是中间人攻击,Charles需要做的事情是对客户端伪装服务端,对服务端伪装客户端,具体
- 截获真实客户端的HTTPS请求,伪装客户端向真实服务端发送HTTPS请求
- 接受真实服务器响应,用Charles自己的证书伪装服务端向真实客户端发送数据内容