安卓模拟器代理设置

27

我正在尝试设置网络代理以查看模拟器流量。

如果我在模拟器的网络设置中进行更改(10.0.2.2:<端口>),则一切正常。 但是,如果我尝试使用命令行设置代理,如emulator -avd myAvd -http-proxy localhost:<端口>,SSL流量不会通过,我会收到超时错误。

有人能够使这个工作吗?

谢谢


5
在使用 emulator -avd 命令时,要附加一个有用的标志 -debug-proxy,这将帮助调试。 - Craig Russell
1
可能是重复的问题:如何设置Android模拟器代理设置? - Josh Lee
4个回答

78

不确定您使用的是哪个模拟器,但有一个问题涉及到Android Studio 2中宣布的new Android模拟器 - Bug跟踪器

为了解决此问题,我必须按照以下步骤使用API 23设置new模拟器:

  1. 在启动模拟器时作为标志传递-http-proxy http://192.168.x.x:yyyy详情请参见此处。
  2. 配置模拟器内代理的访问点设置。要执行此操作,您需要进入设置->更多->移动网络->访问点名称并编辑现有的访问点。
  3. 最后,在开发人员选项中有一个设置,用于配置设备使用旧DHCP客户端而非新客户端。 这必须配置为使用旧的客户端。
  4. 切换飞行模式开关两次。

代理的访问点设置 DHCP客户端的开发人员选项


嗨,我按照你描述的方法尝试了,但仍然不起作用,在模拟器中与Chrome浏览器的值相同。 - EL missaoui habib
如果您的代理需要用户/密码,那么您需要启动Chrome / Web浏览器并在那里设置它们。 - Mualig
4
现在我看不到传统DHCP选项。 现在如何让它起作用? - ReDetection
2
对我来说,第四步很有帮助。没有它就无法工作。谢谢啊。 - user1278890
太棒了。对我有用——省略步骤1和Legacy DHCP步骤,因为我没有那个选项。 - Adam Maloney
显示剩余3条评论

8

请查看https://code.google.com/p/android/issues/detail?id=201402#c6上的评论#6。 如果您使用计算机的LAN IP设置,则可以使用-http-proxy命令行开关使代理工作,而无需任何其他解决方法。

例如:

$ emulator -avd Nexus_5X_API_23 -http-proxy http://10.102.80.149:8888

0

最近我不得不设置一个嗅探环境来调试一些Android SSL流量。

现在似乎你不再需要在模拟器的接入点上设置代理(@craig-russell答案中的步骤2-4)。添加-http-proxy启动参数就足够了。也尝试过API级别<23并成功。

我的规格: Android Studio 2.3.1 Windows 10 Android模拟器版本25.2.5.0

完整详情:http://www.devsbedevin.net/debugging-android-ssl-traffic/


0

你的代理服务器在响应 Android 模拟器的 HTTP CONNECT 请求时可能会返回一些额外的 HTTP 标头。如果是这样,你可能会遇到已知问题,这个问题应该已经被修复了,但由于开发分支之间的不同步,修复程序从未发布。请参见我的评论以获取详细信息。

需要澄清的是,HTTP 请求不受此问题影响,因为它们不依赖于连接隧道(即 HTTP CONNECT),而是通过RFC7230中定义的 HTTP 消息转发进行传递。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接