本篇文章主要讲解利用Charles对Android设备上的APP进行抓包。
环境:

  1. Window系统
  2. Android终端设备
  3. Charles 4.2.8

下载完成后解压,点击【charles-proxy-4.2.8-win64.msi】安装,安装完成后,把charles.jar复制到安装目录的lib下,覆盖粘贴就可以,破解版(如果本地有安装过,打开提示:A suitable Java installation was not found,先卸载旧版本,再重新装试试)。

第一步,先安装证书,打开Charles,Help->SSL Proxying -> install Charles Root Certificate(如下图),安装电脑上的证书;

android 抓取网络请求 android抓包https_https

第二步:安装Android Device上的证书,Help->SSL Proxying -> install Charles Root Certificate on a Mobile Device or Remote Browser,会弹出如下弹框:

android 抓取网络请求 android抓包https_charles_02


上图的意思是,先设置手机上的代理为172.168.30.39,端口号为8888。以小米手机为例,设置->WLAN->你链接的WLAN(点击那个箭号进入详情页,如下图):

android 抓取网络请求 android抓包https_https_03


代理改为手动,输入代理IP172.168.30.39,端口号为8888(不同手机设置可能不一样,不懂的请自行百度)。

设置完后,就需要下载证书到手机上了,打开浏览器,输入:chls.pro/ssl,就会自己下载到手机上了,这里需要记住下载完成保存到本地的路径。

下载完成后,就需要安装证书了,这里还是以小米手机为例,其余机型,不懂的请自行百度。

设置 -> 更多设置 -> 系统安全 ->加密与凭据 -> 从SD卡安装,选择之前保存证书的路径。第三步:安装设备上的证书完成后,需要设置Proxy,如下:

android 抓取网络请求 android抓包https_charles_04


打开设置的对话框:

android 抓取网络请求 android抓包https_android 抓取网络请求_05


点击Add,新增一个443的代理,点击OK。

安装配置完成,现在就可以取试试抓https的包了。。。

2019-08-27(发现百度打不开了,提示:您的连接不是私密连接。。。)

查了一下资料是因为证书不被信任的问题,问题是出在第一步,电脑安装证书的问题,弹出安装界面,一直点击下一步(选项全是默认的)。

解决方案:重新安装,手动选择安装证书的位置,如下图:

android 抓取网络请求 android抓包https_抓包_06


安装完后,重启浏览器,就可以访问百度页面了。。。

2020-05-14(APP无法连接网络,报:java.security.cert.CertPathValidatorException: Trust anchor for certification path not found 这个异常),解决方式:
添加如下文件 res/xml/network_security_config.xml 到你的代码里面:

然后在你 app的 manifest 文件中引入上面的文件, 如下所示:

<?xml version="1.0" encoding="utf-8"?> 
<manifest … >
 <application android:networkSecurityConfig="@xml/network_security_config" … > …

APP重新运行,可以联网了。。。