HTTPS抓包是Android开发、测试及安全分析中常用的技术手段,用于排查网络请求异常、分析接口交互逻辑。但Android平台的证书信任机制迭代和应用防护措施升级,让不少开发者在抓包时遇到各类问题。

主流HTTPS抓包方案
1. 抓包工具+用户证书方案
这是最基础的方案,适用于Android 7.0以下系统,或者未做SSL Pinning防护的应用。主流工具如Charles、Fiddler的配置逻辑类似,以Charles为例:
- 电脑端启动Charles,开启HTTP代理,记录代理端口(默认8888)
- Android设备连接与电脑同一局域网,设置WiFi代理为电脑IP+代理端口
- 在Android设备浏览器访问
chls.pro/ssl下载Charles证书,安装为用户证书
此方案下,Android 7.0及以上系统仅信任系统级证书,用户证书不会被应用认可,会导致抓包失败。
2. 系统级证书方案
针对Android 7.0及以上系统的证书信任限制,需要将抓包工具证书安装为系统级证书,步骤如下:
# 1. 导出Charles证书,转换为PEM格式,计算哈希值 openssl x509 -in charles.pem -inform PEM -outform DER -out charles.der openssl x509 -in charles.der -inform DER -subject_hash_old -noout # 假设输出的哈希值为e3c796c7,重命名证书为哈希值+后缀 mv charles.der e3c796c7.0 # 2. 将证书推送到Android设备的系统证书目录(需要root权限) adb root adb remount adb push e3c796c7.0 /system/etc/security/cacerts/ adb shell chmod 644 /system/etc/security/cacerts/e3c796c7.0 adb reboot
安装完成后,证书会出现在系统信任的凭据列表中,高版本系统应用也会认可该证书。
3. 绕过SSL Pinning方案
如果应用做了SSL Pinning(证书锁定),即使安装了系统级证书也无法抓包,此时需要针对应用做绕过处理。常见方式有两种:
- 使用Frida注入脚本,Hook证书校验相关的系统方法,比如
checkServerTrusted,让校验逻辑直接返回通过 - 反编译应用修改AndroidManifest.xml或网络配置,关闭证书锁定逻辑,重新打包签名安装
以下是Frida绕过SSL Pinning的简单脚本示例:
Java.perform(function() {
// Hook X509TrustManager的checkServerTrusted方法
var TrustManager = Java.use('javax.net.ssl.X509TrustManager');
TrustManager.checkServerTrusted.implementation = function(chain, authType) {
console.log('Bypass SSL Pinning check');
return;
};
// Hook HostnameVerifier的verify方法
var HostnameVerifier = Java.use('javax.net.ssl.HostnameVerifier');
HostnameVerifier.verify.implementation = function(hostname, session) {
console.log('Bypass hostname verify for ' + hostname);
return true;
};
});常见问题及解决方法
问题1:抓包显示Unknown,无法解密HTTPS报文
原因通常是证书未被应用信任,或者SSL Pinning生效。解决方法:
- Android 7.0及以上系统先检查证书是否为系统级安装
- 确认应用是否做了SSL Pinning,若有则使用对应绕过方案
- 检查抓包工具的SSL代理配置是否开启,端口是否正确
问题2:代理设置后设备无法上网
原因可能是代理配置错误或者防火墙拦截。解决方法:
- 确认电脑和Android设备处于同一局域网,代理IP是电脑的局域网IP
- 关闭电脑防火墙,或者将抓包工具加入防火墙白名单
- 尝试切换WiFi网络,避免局域网内IP冲突
问题3:部分请求抓不到
若应用使用了HTTP/2或者QUIC协议,部分抓包工具可能不支持。解决方法:
- 更换支持HTTP/2的抓包工具,比如Charles 4.0以上版本
- 如果是QUIC协议,可在应用网络配置中禁用QUIC,强制使用TCP传输
注意事项
HTTPS抓包仅可用于自身开发测试或合法授权的安全分析,未经允许对他人应用进行抓包分析可能违反法律法规。同时,系统级证书安装和SSL Pinning绕过操作需要设备root或应用修改权限,操作前做好数据备份,避免设备出现异常。
不同Android版本、不同应用的网络配置存在差异,实际操作时可根据具体报错信息调整方案,优先从证书信任层面排查问题,再处理应用层的防护措施。
AndroidHTTPS抓包CharlesFiddlerSSL_Pinning修改时间:2026-05-31 05:54:45