免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
在基于 mPaaS 框架的移动 App 项目开发过程中,经常会遇到各种各样的错误。特别是当问题涉及到客户端与服务器或网关之间的交互行为时,抓取 HTTP 报文是帮助理解和排查这类错误的重要手段。例如,当观察到存在请求报错时,可以通过分析请求报文和响应报文,查看请求的信息是否存在错误、服务器是否正常返回以及查看返回值是否符合预期等,帮助判断问题的根本原因。
常用的 HTTP 抓包工具有 Charles 和 Fiddler。两者的基本原理几乎一样:
本节以 Charles 4.5.5 版本为例,介绍 Charles 的原理、安装、配置和 HTTPS 解密配置的内容。Charles 在 Mac 端是相当重要的 HTTP 报文分析工具,在许多问题的排查中能够发挥相当重要的作用,帮助开发者高效定位和解决问题。
参考文档:
从 Charles 官网 下载 Charles 4.5.5 的 dmg 安装包,运行安装包并安装到系统中。
首次启动 Charles 时,会请求给予设置系统代理的权限,设置允许。启动后,当有 HTTP 请求经过 Charles 时,可以在 Charles 主界面中见到这些请求,如下图:
http://www.antfin.com/
,可以在 Charles 中见到该请求,如下图:默认情况下,Charles 不会对 HTTPS 报文进行解密,如果需要分析 HTTPS 的报文内容,需配置 SSL Proxying 功能。主要有两部分:
chls.pro/ssl
,浏览器会自动下载 charles-proxy-ssl-proxying-certificate.pem
并提示安装 Charles Proxy Customer Root Certificate
。需要注意的是,对于Android App,需要通过增加 配置网络安全选项 的方式来信任用户信任凭据。步骤如下:
res/xml/network_security_config.xml
中,XML 内容如下:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
更新 AndroidManifest.xml
文件,配置使用上面的 network security configuration:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application ...
android:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
</manifest>
点击这里 下载信任 User CA 的代码示例。
在 Charles 菜单栏选择 Proxy > SSL Proxy Settings…,在 SSL Proxying 选项卡中可以添加需要进行 HTTPS 报文解密的域名和端口,并勾选 Enable SSL Proxying。
*.aliyun.com
*.alipay.com
*.aliyuncs.com
上述配置完成后,可在 Charles 中看到 HTTPS 报文的内容,例如:
在文档使用中是否遇到以下问题
更多建议
匿名提交