1.前言
以前刚接触Android时候用过Fiddler抓包api学习。转眼几年过去了,现在有需要用到抓包,再用回Fiddler发现不太好用,大部分Https都是提示Tunnel To还有443,看不到接口调用和数据。
朋友推荐Charles,今天就学习了一下,写个文章总结和记录。
2.Charles
Charles是一款收费的抓包工具,但是安装之后,默认有30天试用期。付费的区别是,无期限限制,打开程序不用等10s(故意恶心免费用户的?/狗头)。
目前提供win64,macOS,Linux64版本。
3.安装
到 官网 下载并安装程序。本人使用Win10,后面都以Win10为例。
安装过程没什么好说的,选择安装位置,一直下一步到结束。
题外话,虽说大天朝虽然目前网络环境渐渐正版化,但是发现这个软件还有一些提供破解的/手动狗头。这个破解比较暴力,手速快点1min不到,就替换个Charles.jar文件。后面的 链接 与我无关,希望下次用的时候这个网址别404了,各位下手轻点。
4.一些配置
打开程序之后,默认会开启 Windows proxy,抓取 windows 的访问请求。如果想只抓取手机的可以在 Proxy->proxy setting->Windows 中关闭默认启用。
5.抓包手机Https(Android )
5.1 安装根证书
help->SSL Proxy->Install Charles Root Certificate,选择 安装证书 ,一直到下一步到到安装完成。
5.1 手机上安装证书
步骤
-
在windows的Charles程序中,
help->SSL Proxy->Install Charles Root Certificate on a Mobile Device or Remote Browser
提示内容的意思是,确认手机使用Charles的代理(主机地址:端口号),然后访问chls.pro/ssl去下载并安装证书。
提示内容 按照提示内容操作,首先电脑和手机在同一个局域网中,也就是电脑和手机连接同一个网络。可以连接相同的Wifi,或者电脑用网线,手机用wifi但是确保是同一个网络。
手机
已连接的wifi设置中,设置手动代理,代理内容在第一步的提示框中给出了。填入电脑主机地址和端口号即可。-
设置完代理后,会在windows端Charles得到手机连接提示,选择
Allow允许!
如果手快点了Deny拒绝,在Charles的Proxy->Proxy Setting中更改端口号,然后重启Charles,手机重新配置一下手动代理的端口号,就会重新得到提示。
连接提示,别人的图 手机浏览器访问
chls.pro/ssl,下载证书文件。我下载的文件名是charles-proxy-ssl-proxying-certificate.pem,点击会提示安装证书。
在MIUI12中点击文件没识别出证书,需要到设置->密码与安全->系统安全->加密与凭证,然后选择从存储设备安装,找到你下载的证书的文件路径地址,选择证书,就会执行安装操作。安装后,在设置->密码与安全->系统安全->加密与凭证->信任的凭证->用户能够看到刚刚安装的的证书。
5.2 Charles的SSL代理设置
Charles进入 Proxy -> SSL Proxying Settings 中,勾选 Enable SSL Proxy ,填入 Host 目标域名,和 Port端口号。
- 可以在
Host填入*,端口号填入443,表示抓取所有Https(443端口)的请求。 - 或者可以在监控窗口,看到地址后,右键选择
Enable SSL Proxying,就会自动添加到设置中了。
值得一说的是,在侧边的 Notes 还非常有人性化的提示,我就是根据这个提示设置了的。

5.3 关于Android7.0+的Https都是Unkown
这是由于Android7.0+的Https启用了SSL验证,需要绕过该验证才能正确抓取。解决也简单 Xpose + JustTrustMe。由于现在的手机基本都不给Root,所以不建议使用 Xpose 了,改为 VirtualXpose。
使用也简单,步骤
- 先从 官网 下载
VirtualXpose的apk安装包。
注意:0.19.0以上版本只支持安装64位应用(安装目标app时如果是32位会提示不支持),若你的应用是32位,需要安装下面的0.18.2版本。 - 然后到 Github 上下载
JustTrustMe的apk安装包,这个是Xpose框架,用来绕过Android的 SSL 机制。 - 在Android手机上安装
VirtualXpose的apk和JustTrustMe的apk。 - 打开
VirtualXpose,在设置中,克隆JustTrustMe和 需要抓包的应用。 - 设置的框架中勾选
JustTrustMe,然后到设置中重启VirtualXpose,让框架生效。 - 打开需要抓包的应用,就可以在Charles中抓到Https请求了。

