Android Studio模拟器中APK网络请求绕过代理问题排查(2023.2.1)
问题分析与解决办法
以下是导致你遇到的APP请求无法被Postman Interceptor捕获的常见原因及对应解决方案:
1. 模拟器代理配置错误(核心原因)
Android Studio的HTTP Proxy设置仅作用于IDE自身,不会自动同步到模拟器系统。而且模拟器里的127.0.0.1指向模拟器自身,不是你的主机电脑,所以你设置的代理地址对APP无效。
解决步骤:
- 打开模拟器的「设置」→「网络和互联网」→「WLAN」。
- 长按当前连接的网络(通常是
AndroidWifi),选择「修改网络」。 - 勾选「显示高级选项」,代理设置选「手动」,代理主机名填
10.0.2.2(Android模拟器专门用来指向主机localhost的特殊IP),代理端口填5559,保存设置。
2. HTTPS请求的证书信任问题
Postman Interceptor需要通过中间人证书来捕获HTTPS请求,但Android 7.0+默认只信任系统预装的证书,不信任用户安装的证书。如果APP的HTTPS请求不允许使用用户证书,就会绕过代理。
解决步骤:
- 导出Postman Interceptor的证书:打开Postman→右上角Interceptor图标→「Certificate」选项卡→点击「Download Certificate」保存为
.pem或.crt文件。 - 将证书推送到模拟器的系统证书目录:
- 打开命令行,进入Android SDK的
platform-tools目录(比如cd C:\Users\你的用户名\AppData\Local\Android\Sdk\platform-tools)。 - 执行命令
adb root获取模拟器root权限,再执行adb remount挂载系统分区为可写。 - 执行
adb push 你的证书路径 /system/etc/security/cacerts/。 - 执行
adb shell chmod 644 /system/etc/security/cacerts/你的证书文件名,确保权限正确。
- 打开命令行,进入Android SDK的
- 重启模拟器,之后APP的HTTPS请求应该能被捕获。
3. APP自身的代理绕过机制
部分APP会在代码中硬编码网络请求配置,比如使用OkHttp时设置Proxy.NO_PROXY,或者检测代理并直接绕过,甚至使用HTTP/3、QUIC等Postman Interceptor不支持的协议。
解决办法:
- 换用更专业的抓包工具(如Charles、Fiddler),它们对HTTP/3、QUIC的支持更好,也能更灵活处理代理绕过的情况。
- 如果是你自己开发的APP,可以检查代码中的网络客户端配置,移除代理禁用逻辑;如果是第三方APP,可能需要使用Xposed框架等工具来hook网络请求,强制走代理。
4. Android网络安全配置限制
第三方APP通常会配置network_security_config.xml,限制只信任系统证书、禁止明文流量,或者指定仅信任特定CA证书,这会导致代理证书无法被识别,请求直接绕过代理。
解决办法:
- 如果你能获取APP的源码,修改
network_security_config.xml,添加<trust-anchors><certificates src="user" /></trust-anchors>来信任用户安装的证书,然后重新签名安装。 - 对于第三方APP,可以使用APKTool反编译,修改配置后重新签名安装(注意可能违反APP的使用协议)。
内容的提问来源于stack exchange,提问作者jeancallisti
相关产品推荐
相关产品推荐

