Charles 抓取移动设备数据包基本使用教程
什么是 Charles
Charles是一个HTTP代理/ HTTP 监听器 /反向代理,它使开发人员能够查看他们的机器和Internet之间的所有HTTP和SSL / HTTPS通信。这包括请求、响应和HTTP头(其中包含cookie和缓存信息)。
使用Charles,我们可以抓取移动设备经由其代理的数据包,通过配置客户端证书,可以得到解密后的https数据包。
Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP and SSL / HTTPS traffic between their machine and the Internet. This includes requests, responses and the HTTP headers (which contain the cookies and caching information).
注:Charles是一款跨平台的收费软件,安装后会获得30天的体验时间,在体验期间内,每次使用最长会话不能超过30分钟,会话结束后重新开启可继续使用。
安装
使用Homebrew安装
brew cask install charles
从官网下载安装
使用
HTTP
开启代理服务
在配置的Proxy -> Proxy Settings
设置代理服务器监听的端口号,一般我们使用8888端口。
手机网络使用代理
设置手机网络代理为前一步代理服务器的ip和端口,注意要在同一网段下。
查看网络请求
配置完成后我们可以看到Charles已经开始捕获网络请求了。但是这个时候捕获到的HTTPS数据包是乱码的,因为被加密过。如果想要得到解密后的内容,还需要对HTTPS做额外的配置。
HTTPS
本机安装Charles 证书
与网络上的教程直接 Help -> Install Charles Root Certificate不同
这一步我们先要保存证书到本地,因为Mac的安全策略不允许把证书安装到System Roots。
选择 Help -> Sava Charles Root Certificate
保存本地后,需要安装证书。
直接运行证书文件、Help -> Install Charles Root Certificate或者运行Key Chain Access都可以。
打开证书管理后,拖入到System下
此时证书并没有被信任,双击未被信任的证书。
选择总是信任
移动设备安装证书
确认移动设备已经使用Charles代理后,浏览器访问下面的地址,下载证书并安装。
chls.pro/ssl
一般浏览器打开后会默认提示安装,一些手机需要额外处理。
如小米手机默认浏览器无法自动安装,可以使用edge浏览器下载。
iphone安装后需要在配置中信任证书。
配置需要抓取的域名
打开 Help -> SSL Proxy Settings
添加需要抓包的域名,端口为443
全部配置完毕后,可以看到接口数据已经被解密。
疑难杂症
安卓可以抓取浏览器https,但无法抓取应用内https数据
由于安卓的安全设置,应用可以不使用系统提供的证书自行验证,这类应用如微信。
有人说可以替换系统根证书实现,懂安卓可以尝试下。
iphone强制app使用系统证书,所以可以抓取ipone app的数据作为替代。
其他问题待补充
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: