使用Charles抓包Android Studio模拟器时配置证书的问题与解决方法

所属分类:Android | 发布于 2023-03-06

耗费了好几个小时,终于实现了使用Charles对Android Studio模拟器抓包功能。

Android Studio自带的App Inspection有抓包的功能,但是对于一个初学者来说,写的代码不稳定,稍微一不注意就闪退了,闪退的时候App Inspection抓取的信息就丢失了,没办法去找原因。

由于Fiddler只支持windows系统,所以在mac下还是选择使用Charles进行抓包。

使用Charles除了通用的配置外,如果要抓取https,还要配置证书,这是这篇文章的核心所在。

证书问题

1、解决方案一

高版本的Androd只信任系统级别的三方证书,用户级别的证书被使用,所以要求将证书安装系统级别,具体位置是/system/etc/security/cacerts目录下,但是这个目录是不可写的,于是在网上找各种教程,目的是为了把这个目录改为可写目录。耗费了大量精力,逐一尝试后,无果。这个过程中学到了adb命令和emualtor命令,但是始终都是不行,最关键的一个命令 disable-verity命令执行不了。

2、解决方案二

证书安装到用户级别好像也能访问,但是对于用户级别的证书,使用的网络请求库Retrofit底层的OkHttp要求自己验证证书,要写一个证书的验证方法,网上搜的是java版本的,自己的kotlin又是刚学,就直接把这个解决方法放弃了。

3、解决方案三

就在快要绝望的时候,又在网上看到了有人在说用配置文件的方法,后来又研究了好一会儿,发现这个方法是可行的。

核心的内容实际上是这个网络安全配置:https://developer.android.google.cn/training/articles/security-config?hl=zh-cn#manifest

3.1、在AndroidManifest.xml的application段增加android:networkSecurityConfig

android:networkSecurityConfig="@xml/network_security_config"

3.2、配置res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="@raw/charles_certificate" />
            <certificates src="system" />
        </trust-anchors>
    </base-config>
<!--    <domain-config>-->
<!--        <domain includeSubdomains="true">test.xxx.net</domain>-->
<!--        <trust-anchors>-->
<!--            <certificates src="@raw/charles_certificate"/>-->
<!--        </trust-anchors>-->
<!--    </domain-config>-->
</network-security-config>

这里有几个要注意的地方:

  1. 证书的名称不能有大写字母、中横线等,这应该是android规定的。
  2. 证书只用写名称就好了,不用写后缀,可以用pem格式,也可以用cer格式。
  3. 最开始用的是下面注释掉的代码,发现不行,不知道哪里出错了,最后改成上面的,就可以了。

证书的问题解决了,那顺便把配置也简单记录一下吧

抓包配置

1、Charles配置

1.1、查看本地代理IP

1.2、代理配置

在菜单栏Proxy->Proxy Settings,这里可以查看代理端口

1.3、SSL代理配置

这里主要用于配置SSL的信息,这里也可以用通配符

2、模拟器配置

电脑端设置好以后,还需要在模拟其上设置代理。具体为

1、Settings

2、Network & internet

3、Wi-Fi

4、AndroidWifi

5、点击右上角修改按钮

6、将代理方式修改为手动,并填入ip地址和端口号,最后点击保存即可

文哥博客(https://wenge365.com)属于文野个人博客,欢迎浏览使用

联系方式:qq:52292959 邮箱:52292959@qq.com

备案号:粤ICP备18108585号 友情链接