Charles抓包小结

使用Charles抓包,认为只是一个工具,没有深究过,用一点探索一点,换个手机配置一遍发现竟然很多原则性的东西都不太清楚。

本来打算整一篇完整的配置过程,后来发现了很多整理极其优秀的文章。故而,这里就总结一些抓包原理和配置原理,具体操作细节可参考文末的文章。

说明:Charles是付费软件,可以试用30天,在官网https://www.charlesproxy.com下载,可以找破解的charles.jar包替换, 在线生成jar包工具https://www.zzzmode.com/mytools/charles/

覆盖安装的charles.jar即可

mv ~/Desktop/charles.jar /Applications/Charles.app/Contents/Java

注:官网下载Charles,有时候比较慢,可以在百度网盘下载。【链接地址 密码:wn7a】

一、抓包原理小结
抓包全称”抓取数据包”,而数据包是在网络中传输格式化数据(以一定的格式封装、分组、打包)的单位。

抓包软件Charles其实就是一个HTTP代理,这里代理屹立在客户端和服务端之间,指定的请求先通过Charles, 然后在到达服务器。

二、基本配置原理小结
注:以下基于MacOS和iPhoneX:

0、PC上安装Charles软件,启动后,默认配置就可以抓到PC上通过浏览器发起的HTTP请求。

1、PC上安装Charles软件,启动后,默认配置,手机上通过WIFI的HTTP代理配置(配置PC IP + Port), Charles就能可以抓到手机上的HTTP请求。

2、Charles如果要抓PC上的HTTPS请求,需要在PC上安装SSL证书,并在钥匙串中开启证书信任。如果不抓取就不需要安装。

常见问题:开启了Charles发现浏览器访问HTTPS站点,提示”您访问的链接不是私密链接”。大概率是PC上没有安装SSL证书,或者安装后没有开启信任。

解决思路:很多时候,PC上没必要通过Charles来抓包,如果开启了Charles,PC上想访问HTTPS请求,可以把Charles中macOS Proxy默认勾选去掉。

3、Charles如果要抓手机上的HTTPS请求,需要在手机上安装SSL证书,并在设置中开启信任。如果不抓取就不需要安装。

常见问题一:手机设置了HTTP代理,发现APP打开一些页面出现没有网络连接的症状,同时抓包记录HTTPS的请求结果是❌unknow, 大概率是手机没有安装SSL证书。

常见问题二:手机(电脑)安装了证书,抓包记录HTTPS的请求结果是(绿色|蓝色箭头),点击详情提示SSL Proxying not enabled for this host: enable in Proxy Settings, SSL locations。

解决方法:在SSL代理设置中增加host为*, port为443

4、PC、iPhone、Android安装证书流程
https://www.jianshu.com/p/9d0e5d426c26

5、在家通过VPN访问公司内网,抓包公司内网的请求,跟在公司操作完全一样。手机绑定的是家里的wifi地址,不是公司内网地址。

思考:请求是先经过Charles,还是先经过VPN?

三、HTTPS为啥可以被抓包

Charles通过使用了HTTPS代理功能,你并不是直接与服务端通信,而是先与Charles通信,Charles再与服务端通信,这种模式下,Charles才能看到通信明文。你用Charles之所以能看到HTTPS明文,是因为你允许了Charles在你的电脑上做手脚(安装证书)。也就是说你自己本身就是中间人,跟SSL中间人攻击有区别。

HTTPS的加密没有安全问题,但它只是用来防止通信过程中被第三方获取明文。如果黑客能直接控制通信的双方(客户端/服务器),那么黑客肯定能看到HTTPS明文的。
更详细的讨论可参考[抓包工具能获取 https 数据,所以 https 并不安全?]、[知乎: HTTPS可以防止中间人篡改内容吗?]

弄明白了HTTPS的原理,对这个问题更容易明白。关于HTTPS的原理可参考本站文章《HTTPS学习笔记

四、参考
配置细节可参考以下文章,写的太完整了,手动点赞。

https://www.jianshu.com/p/5539599c7a25
https://juejin.im/post/5c4ed14f6fb9a049ed3142cc
https://www.jianshu.com/p/8825179786ac

发表评论

电子邮件地址不会被公开。 必填项已用*标注