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请求了。