转载请注明出处:https://blog.youkuaiyun.com/binbinqq86/article/details/80927917
前言
抓包工具有很多,Windows上都是使用Fiddler,但其实Fiddler同时也支持Mac,Linux版本,官网下载地址如下:https://www.telerik.com/download/fiddler。
而Mac上大家常用的就是瓷瓶子Charles,它也是全平台支持的,官网下载地址如下:http://www.charlesproxy.com/download/。不过Charles是收费的,但是如果你不付费,每次可以使用三十分钟,然后软件自动退出,每次回到软件界面会有10秒的delay模态窗口提示,相对来说,这个算是非常友好的了,不怎么影响我们使用。今天我们就来讲解一下Charles的简单使用:
原理
想要了解其中原理,首先需要知道HTTPS相关知识,还不了解的同学可以参考我的上一篇文章:https://blog.youkuaiyun.com/binbinqq86/article/details/80939838。整个抓包的过程,Charles充当的就是中间人的角色。Charles本身是一个代理工具,如果只是普通的HTTP请求,因为数据本身没有经过再次加密,因此作为代理可以知道所有客户端到服务器的请求内容和服务器返回给客户端的数据内容。而HTTPS由于对传输和数据进行了加密,所以Charles作为中间代理,就需要对客户端伪装成服务器,对服务器伪装成客户端。
客户端一般会对服务器的CA证书做检验(这里我们忽略双向校验的情况),一般浏览器或者手机都内置了很多CA根证书,而大部分网站都是这些知名CA机构颁发的证书,所以我们访问的时候系统帮我们自动校验了证书的合法性,但是比如12306以及我们的Charles证书,系统是默认不信任的,会导致无法访问HTTPS的服务器地址,那么是怎么进行抓包的呢?
- 第一种是修改https通信代码,比如Android中我们需要实现X509TrustManager接口去自己做一套证书校验,但是并不通用。
- 第二种就是将私有CA签发的数字证