Charles的主要功能:
(1)截取Http 和 Https 网络封包。
(2)支持重发网络请求,方便后端调试。
(3)支持修改网络请求参数。
(4)支持网络请求的截获并动态修改。
(5)支持模拟慢速网络。
下载地址
- 地址 http://www.charlesproxy.com/
- 注册码 (推荐)
// Charles Proxy License
// 适用于Charles任意版本的注册码,谁还会想要使用破解版呢。
// Charles 4.2.7目前是最新版,可用。
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
- 破解版本
云盘中文破解免费版:链接: https://pan.baidu.com/s/1PgqzfYmAiOUdDmonDai1aA 密码: azsb
安装证书
- 修改所链接网络SSID代理后,比如我的是192.168.3.29:8888
- 打开网页 http://www.charlesproxy.com/getssl 下载 mitmproxy-ca-cert.pem手机证书文件
- 直接点击pom文件安装无效, 需要
1 设置
2 安全与隐私
3 更多安全设置
4 从存储设备安装
5 选中证书文件,点击安装
6 输入锁屏密码
7 给安装文件命名mitmproxy
4.
抓包原理
Charles作用其实相当于拦截器,当客户端和服务器通信时,Charles其实会先接收到服务器的证书,但是它会自己生成一个证书发送给客户端(不管是Web端或App应用),也就是说它不仅仅是拦截,甚至还可以修改。
由于Charles更改了证书,所以如果你是使用的Web浏览器,需要导入相应的Charles证书,否则校验不通过会给出安全警告,必须安装Charles的证书后才能进行正常访问。
App应用则需要在你的手机设备中添加该Charles证书,有些设备可能相对变态,必须你设置密码锁才可以安装证书成功。
客户端向服务器发起HTTPS请求
Charles拦截客户端的请求。
服务器向“客户端”(实际上是Charles)返回服务器的CA证书
Charles拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端。(这一步,Charles拿到了服务器证书的公钥)
客户端接收到“服务器”(实际上是Charles)的证书后,生成一个对称密钥,用Charles的公钥加密,发送给“服务器”(Charles)
Charles拦截客户端的响应,用自己的私钥解密对称密钥,然后用服务器证书公钥加密,发送给服务器。(这一步,Charles拿到了对称密钥)
服务器用自己的私钥解密对称密钥,向“客户端”(Charles)发送响应
Charles拦截服务器的响应,替换成自己的证书后发送给客户端
至此,连接建立,Charles拿到了 服务器证书的公钥 和 客户端与服务器协商的对称密钥,之后就可以解密或者修改加密的报文了。
HTTPS抓包的原理还是挺简单的,简单来说,就是Charles作为“中间人代理”,拿到了 服务器证书公钥 和 HTTPS连接的对称密钥,前提是客户端选择信任并安装Charles的CA证书,否则客户端就会“报警”并中止连接。这样看来,HTTPS还是很安全的。