【问题标题】:Can not use Fiddler proxy with Android Emulator无法将 Fiddler 代理与 Android 模拟器一起使用
【发布时间】:2020-08-05 02:00:23
【问题描述】:

我想通过主机上的 Fiddler 应用捕获来自模拟设备的所有流量。经过我所有的尝试,我最终得到了无限数量的超时 CONNECT 请求,即使是在 HTTP(非 HTTPS)请求上也是如此。

我做了什么:

Android 模拟器代理设置:

提琴手设置:

将以下行添加到主机主机文件:127.0.0.1 local.test 和 Android 设备主机文件:10.0.2.2 local.test。这样做是为了 1) 防止 Chrome 强制切换到 HTTPS 2) 将此名称指向正确的 IP 地址,因为它在主机和 Android 系统上是不同的。

将 FiddlerRoot 证书从 DER 格式转换为 PEM(以 BEGIN CERTIFICATE 行开头)并将其存储到手机文件系统:/system/etc/security/cacerts/c8450d0d.0 并具有正确的权限:

使用带有可写文件系统的 Google-API 映像 (Android 9) 对 Android 进行了添加。

此根证书出现在系统根证书列表中:

FiddlerRoot 证书也成功安装在主机上,并毫无问题地解密 HTTPS 流量:

结果中:

当我在android模拟器中关闭代理时,我可以使用自定义域名local.test:3200访问本地应用程序。我也可以毫无问题地访问互联网站点。

当我在 android 模拟器中打开代理时,我看到很多 CONNECT 请求都超时了:

当我尝试访问我的本地 HTTP 应用程序 http://local.test:3200 时,我收到了对指定端口的 HTTPS CONNECT 请求:

为什么它试图通过 HTTPS 连接到 3200 端口???此问题仅在 Android Emulator 代理打开时发生。关闭后,我可以通过 HTTP 成功访问我的本地页面。是模拟器应用程序尝试切换到 HTTPS 吗?还是我做错了什么?

目前,我无法捕获和解码来自模拟设备的任何流量。有人可以帮帮我吗?

【问题讨论】:

  • 为了测试,我不会在模拟器和主机上将主机条目命名为相同的名称。如果它们相同,您将永远不知道哪个条目处于活动状态。最好将它们命名为local1.testlocal2.test。顺便说一句:您是否在设备上禁用了安全 DNS(DNS over HTTPS)?我不确定是否使用安全 DNS,以防设置了代理但您永远不知道。
  • @Robert 如果我的本地 Web 服务器配置为响应 local1.test,我的本地 Web 服务器将如何响应从电话呼叫的 local2.test 主机名?主机名必须相同,因为 Fiddler 使用本地解析机制将主机名解析为 IP 地址。如果它将收到电话上已知的 local2.test 名称,它将无法将此名称解析为要连接的 IP 地址。

标签: android ssl android-emulator fiddler


【解决方案1】:

我也遇到了这个问题。 Fiddler 可以正确处理和拦截到端口 80 的 HTTP 请求,但不能正确处理和拦截到其他端口的 HTTP 请求或 HTTPS 请求。

原来是a bug of Android Emulator(应该在 2014 年修复,但补丁从未进入 dev 分支,因此从未修复)。它不适用于在代理响应中的 HTTP/1.1 200 Connection Established 之后添加额外标头(如 Proxy-Agent: xxxFiddlerGateway: Direct)的 HTTP 代理服务器。

试试我的 gost 的无头分支,它充当代理服务器并能够转发到其他代理服务器:https://github.com/shunf4/gost/releases/tag/v2.11.1-without-header

你只是运行它

gost(.exe) -L :8090 -F (Upstream HTTP proxy server address, e.g. http://127.0.0.1:3408)

将您的 HTTP 代理转换为没有额外标头的代理。然后,在 Android Emulator 中将代理服务器设置为127.0.0.1:8090。砰,一切正常!

【讨论】:

    猜你喜欢
    • 2015-11-27
    • 2018-03-05
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    相关资源
    最近更新 更多