android - 无法在带有 Android 的 Charles Proxy 中查看 HTTPS 请求
问题描述
我正在尝试在 Google Playstore 上调试一个应用程序,以便我可以看到它发出的请求。我已经在我的计算机上设置了Charles Proxy来帮助我这样做,但是我在查看使用 https 发送的请求时遇到了问题。我的步骤如下。
我的电脑:
Manjaro Linux
我的手机:
Google Pixel 4a
Android 11
未植根
我的设置:
使用 Charles v4.6.1
代理设置
SSL 代理设置
我的访问控制设置包含我手机的 IP。
以下是我允许应用通过 charles 使用 SSL 的步骤:
- 从 Google Playstore 下载应用程序。
- 找到apk并将其传输到我的PC,然后通过Google Playstore卸载该应用程序。
- 使用 XDA 论坛的 Apktool 反编译 apk。
- 根据this和this
<network-security-config>
,我需要在网络安全 xml中添加以下行。
<debug-overrides>
<trust-anchors>
<certificates src="user"/>
</trust-anchors>
</debug-overrides>
- AndroidManifest.xml 已经遵循了所需的更改,因此我不在那里进行任何更改。
- 我将反编译的内容编译成一个apk。
- 我使用 Uber Apk Signer 对构建的 apk 进行签名。
- 我将构建和签名的 apk 传输到我的手机,然后安装它。
通过此列表,我在任何步骤都没有收到任何错误。
提前谢谢您,如果您需要更多详细信息,请告诉我。
解决方案
您的网络配置位于<debug-overrides>
其中,仅适用于调试版本。您是在调试模式下构建应用程序,还是在生产环境中构建应用程序?如果您不在调试模式下构建,则该配置将不适用。
您可能想<base-config>
改用它,它适用于所有构建,而不仅仅是调试构建。这里有一个完整的例子:https ://httptoolkit.tech/docs/guides/android/#if-you-dont-have-a-custom-network-security-config 。
如果这不起作用,那么很可能在应用程序代码本身中存在一些证书固定,与网络安全设置无关。要解决这个问题,您需要手动编辑代码本身。您也可以尝试使用https://github.com/shroudedcode/apk-mitm,它有一系列自动补丁,可以为您禁用许多常见的手动固定实现。
推荐阅读
- python - UnboundLocalError:分配前引用的局部变量“a1”
- javascript - Safari 剪贴板错误“TypeError: undefined is not an object”
- json - 如何使用机器人框架代码从列表中获取第一个键?
- java - 只想从我的手机图库中添加图片到数据库中,但在两者之间遇到了一些问题
- python - 没有名为 azure.cosmos.cosmos_client 的模块
- javascript - 如何在 Vive Focus Android WebView 的 JavaScript 中删除输入字段的选择突出显示?
- winforms - 为笛卡尔图 LiveCharts 添加边框
- wordpress - wordpress 如何使用 polylang 更改网站语言
- angular - 角度和离子路由
- react-native - 创建新频道时如何上传自定义图片