通过抓包我们可以知道APP的API请求参数,我们就可以利用这些API做一些我们想做的事情。常用的抓包工具有 Flidder 和 Charles,我一般是使用 Charles,如果是HTTP抓包是非常简单,但是HTTPS就复杂很多,而且还可能无法抓包。
HTTPS 抓包
这里介绍的是 Charles + Android 的HTTPS抓包方式,首先是要在手机上安装 证书 才可以实现抓包。
Install Charles Root Certificate
是给PC端安装证书,实现电脑浏览器HTTPS抓包。Android 是点击 Install Charles Root Certificate on a Mobile Device or Remote Browser
。
下载 pem 文件
在手机浏览器输入 chls.pro/ssl
,建议使用UC浏览器下载,就会提示一个 pem
格式的文件。
小米手机安装 charles 证书,提示
没有可安装的证书
,需要使用UC浏览器来下载。
安装证书
这里是以小米手机为例,打开 设置 - 更多设置 - 系统安全 - 加密与凭证 - 从存储设备安装;然后找到刚才下载的 pem文件目录。
设置代理
找到电脑的IP地址,手机设置电脑的代理
设置 SSL代理
添加需要抓包的网址
测试
到这里就已经配置完毕了,在手机的浏览器上输入 对应的测试网址就可以看到 HTTPS 抓包。
异常一(无法抓包,需要安装系统级别证书)
通过手机浏览器的浏览的HTTPS页面基本都可以抓包,但是 APP 的请求,很多都是无法抓包,主要是有两种原因,这个就是我们安装的证书是属于 用户级别
,需要安装成为系统级别才可以,但是必须要 ROOT 权限,之后的文章再解释如何解决。
Failure Client SSL handshake failed: An unknown issue occurred processing the certificate (certificate_unknown)
Notes You may need to configure your browser or application to trust the Charles Root Certificate. See SSL Proxying in the Help menu.
如果我们是用于APP调试,Google给出了解决方案
https://developer.android.google.cn/training/articles/security-config.html
异常二(无法抓包,APP做了证书校验)
这种就是APP已经做了证书的校验,只允许通过信任的证书,所以无法实现抓包。