最近在学习网络抓包相关的知识,回想秋招那会面试网易的时候,被问到抓包原理,当时没有回答的太好,所以想记的再好不如实操,所以趁寒假在家就下载了charles这款软件,实际体验了一下网络抓包的流程,中间遇到了几个bug,特地记录一下。
charles下载和破解
首先去官网下载charles软件:https://www.charlesproxy.com/download/
根据你使用的是什么系统选择相应的版本下载就行,这里我下载了macos版本的charles。
官方正版的charles是使用30天的,所以作为学习用的话,我在网上找了一个破解方法。https://www.charles.ren/
随便填写一个registered Name就会生成相应的License Key。然后打开charles->help->Registered to 填写相应的name和License Key就破解成功了。
实现手机端的抓包
首先打开proxy->proxy Settings,记住Port号,并且勾选enable transparent http proxying。
然后手机端打开wifi,点击连接的wifi的右边的感叹号,滑到最下面,设置HTTP代理,设置为手动,设施服务器和端口,服务器就是你电脑当前的ip地址,点击charles->help->local ip adress就可以查看mac端本地ip地址。
手机端就设置好了,但是mac端还需要在charles中添加手机端的ip地址,proxy->access control setting,这样才能让charles对手机端实现抓包。
接下来就是最重要的一步,电脑端和手机端分别安装charles ca证书。首先在mac端安装charles ca证书。charles->help->ssl proxying->install charles root certificate。安装过程中务必选择让电脑始终信任charles ca证书,否则会导致抓包失败。
接下来手机端安装charles ca证书。打开safari浏览器,输入chls.pro/ssl,就会自动下载相应的证书。
下载完成后,需要在设置中安装相应的证书。
最后在设置->通用->关于本机->证书信任设置->打开手机端对charles proxy ca证书的信任。
至此,就完成了charles ca证书的安装了。接下来就可以任意访问手机端的app,然后再charlse端进行抓包。在抓包之前,还有最后一步需要设置。直接抓包显示的还是乱码,notes中会提示我们ssl proxying并没有使能这个host,我们还需要在ssl proxying setting中使能该host.
例如,我们打开微博,就需要使能微博host,
此时我们在手机端打开微博app
就能通过charles进行抓包了!
至此,我们实现了对手机端app的抓包,但是,为什么charles能够截取手机app post和get的信息呢,https不是安全的传输协议吗?下一篇文章我会探究一下charles实现抓包的底层原理。