查尔斯代理 + Android HTTPS
Charles Proxy + Android HTTPS
所以这里有一些类似但过时的答案,可能在 years/months 之前对我有帮助:
我遵循了所有说明,我可以很好地读取 http 请求,但不能读取 https 请求。仍然不知道我做错了什么。 post 我自己的东西不多,因为我只是遵循了上述指南。
我认为主要问题是如何强制我尝试调试的应用程序使用我的证书?清单修改似乎并不能解决问题。
请参阅 ,其中更新了 Charles 4 和 Android 7 的答案。
您必须从 Charles 帮助菜单安装证书,并且您必须使用设置 -> 安全 -> 从设备上的存储安装。
您的应用需要 network_security_config.xml
您必须使用可调试的应用程序
对于寻找更新 Android 版本(8、9、10 或 ++)+ CharlesProxy 4.6 的用户
可以参考这个guidethrough...
从 Android N+ 开始,它需要额外的步骤才能正常工作。
1.Add 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.Add 到 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config" ... >
...
</application>
</manifest>
如果你不能让它工作,你可以查看sample code,它有所有配置。
所以这里有一些类似但过时的答案,可能在 years/months 之前对我有帮助:
我遵循了所有说明,我可以很好地读取 http 请求,但不能读取 https 请求。仍然不知道我做错了什么。 post 我自己的东西不多,因为我只是遵循了上述指南。
我认为主要问题是如何强制我尝试调试的应用程序使用我的证书?清单修改似乎并不能解决问题。
请参阅
您必须从 Charles 帮助菜单安装证书,并且您必须使用设置 -> 安全 -> 从设备上的存储安装。
您的应用需要 network_security_config.xml
您必须使用可调试的应用程序
对于寻找更新 Android 版本(8、9、10 或 ++)+ CharlesProxy 4.6 的用户
可以参考这个guidethrough...
从 Android N+ 开始,它需要额外的步骤才能正常工作。
1.Add 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.Add 到 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config" ... >
...
</application>
</manifest>
如果你不能让它工作,你可以查看sample code,它有所有配置。