You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MITMProxy 7.0.4与Android AVD 30代理配置后无法正常抓包的问题排查求助

解决MITMProxy在Android AVD上无法代理HTTPS连接的问题

结合你描述的场景(Windows 10 + MITMProxy 7.0.4 + Android AVD 30),我给你几个具体的排查和解决方向:

1. 确保代理设置正确且mitmproxy监听正确地址

  • 模拟器的代理不能填127.0.0.1,必须设置为你Windows主机的局域网IPv4地址(可以通过Windows命令行执行ipconfig查看以太网/WLAN的IPv4地址),端口保持mitmproxy默认的8080(如果没修改过配置的话)。
  • 启动mitmproxy时,要确保它监听所有网卡地址,而不是仅本地回环。启动命令改成:
    mitmweb --listen-host 0.0.0.0
    
    或者用mitmdump的话:
    mitmdump --listen-host 0.0.0.0
    

2. 验证Android系统证书的有效性

虽然adb ls能看到证书文件,但Android 11(API 30)对系统证书的要求更严格:

  • 打开Chrome访问mitm.it,如果能看到mitmproxy的官方验证页面,说明证书已生效;如果仍提示连接不安全,那证书安装可能存在问题。
  • 检查证书的SELinux上下文是否正确,执行命令:
    adb shell ls -Z /system/etc/security/cacerts/c8750f0d.0
    
    正常输出应该以u:object_r:system_cert_file:s0开头。如果不是,需要修复上下文:
    adb shell chcon u:object_r:system_cert_file:s0 /system/etc/security/cacerts/c8750f0d.0
    

3. 处理应用的证书固定问题

Youtube和部分谷歌应用会使用证书固定(Certificate Pinning),它们会拒绝mitmproxy的自定义根证书,导致无法代理:

  • 可以使用Xposed框架模块JustTrustMe来绕过应用的证书验证逻辑(需要模拟器已root并安装Xposed)。
  • 或者用Frida工具hook应用的证书验证方法,比如执行以下Frida脚本(仅用于测试):
    Java.perform(function() {
      var TrustManagerImpl = Java.use('com.android.org.conscrypt.TrustManagerImpl');
      TrustManagerImpl.checkTrustedRecursive.implementation = function() {
        return;
      };
    });
    
  • 临时方案可以启动mitmproxy时加上--ssl-insecure参数,跳过证书验证,但这会降低安全性,仅适合测试场景。

4. 检查Windows防火墙是否拦截端口

Windows防火墙可能会阻止Android模拟器访问mitmproxy的8080端口:

  • 可以临时关闭Windows防火墙测试,如果问题解决,就需要给mitmproxy添加防火墙允许规则:允许mitmproxy应用通过私有网络访问。

内容的提问来源于stack exchange,提问作者Toteph42

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 20:42:49