Charles Proxy + Android HTTPS

时间:2017-04-30 02:06:57

标签: android security ssl https charles-proxy

所以这里有一些类似但过时的答案可能在几年/几个月前对我有所帮助:

Why can't I see http or https traffic from Chrome Browser for Android on Charles Proxy?

How to get charles proxy work with Android 7 nougat?

我按照所有说明操作,我可以很好地读取http请求,但不能读取https请求。仍然无法弄清楚我做错了什么。由于我刚刚遵循了上述指南,因此我自己发布的内容并不多。

我认为主要问题是如何强制我尝试调试的应用程序才能使用我的证书?清单修改似乎没有做到这一点。

3 个答案:

答案 0 :(得分:0)

请参阅已更新Charles 4和Android 7答案的this question

  • 您必须从Charles帮助菜单安装证书,并且必须使用设置 - >安全 - >从存储设备安装。

  • 您的应用需要network_security_config.xml

  • 您必须使用可调试的应用

答案 1 :(得分:0)

对于那些寻找更新的 Android 版本(8、9、10 或 ++)+ CharlesProxy 4.6 的人

可以参考这个guidethrough...

答案 2 :(得分:0)

从 Android N+ 开始,它需要额外的步骤才能运行。

1.将 res/xml/network_security_config.xml 添加到您的项目中。

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

<base-config cleartextTrafficPermitted="true">
    <trust-anchors>
        <certificates src="system" />
    </trust-anchors>
</base-config>

<domain-config>
    <!-- Make sure your URL Server here -->
    <domain includeSubdomains="true">your_production_domain</domain>
    <trust-anchors>
        <certificates src="user"/>
        <certificates src="system"/>
    </trust-anchors>
</domain-config>

=> 确保将 your_production_domain 替换为您要拦截的域

2.添加到AndroidManifest.xml

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

如果您无法使其正常工作,您可以查看 sample code,其中包含所有配置。