Android Charles抓包失败的问题

2022-05-20  本文已影响0人  民谣里不是故事就是诗丶

背景

  1. 新手机 旧电脑,使用Charles 4.6.3版本抓包时提醒Unknown;
  2. 首先排除了没有安装RootCer 和 开启SSL Proxying的问题;
  3. 确认iOS手机连接此IP:8888可以正常抓包;
提示获取不到CA证书.png

解决思路

0. 配置PC/MacOS Root Cer

和普通博文介绍,配置Charles无异,此处略过。

1. 发现手机需要在本地安装CA证书后点击信任

换句话说直接让手机浏览器通过访问chls.pro/ssl下载证书自动安装不太可行,需要pc或者换个浏览器下载下来之后通过微信或者蓝牙的方式传给手机端。


远程调试证书.png

然后在系统设置里(以三星为例,在“设置-生物识别和安全性-其他安全设置-从设备存储空间安装”)找到“从设备存储空间安装”,选择CA证书;然后找到上述文件安装之后才可以使证书生效。

2.Android 7.0用户自己安装的证书是不被app应用信任的

出于安全性考虑,防止charles这种做接口逆向,监听数据;所以我们只能通过修改android 项目中的 network-security-config来允许Charles抓取自家app的接口数据。
具体来说,第一步先在res/xml下新建一个网络管理配置文件允许在debug环境下信任user目录下的证书;

image.png
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>

    <debug-overrides>
        <trust-anchors>
            <!-- Trust user added CAs while debuggable only -->
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
    
</network-security-config>

第二步,在清单文件AndroidManifest.xml中指定配置文件


image.png
    <application
        android:name=".ui.VSApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:networkSecurityConfig="@xml/network_config"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.DEFAULT"
        tools:replace="android:theme">

3. 得证,解决,舒服。

image.png
上一篇 下一篇

猜你喜欢

热点阅读