所以我设置了charles proxy来监控Android模拟器的流量。
现在,当我在Android浏览器中打开网站时,例如: - google.com我在查尔斯代理中看到了google.com。
但是当我在模拟器中打开一个应用程序(比如说应用程序)时,如果应用程序进行了一些网络调用,我会在查尔斯代理上看到ip地址而不是域名。
因为应用程序给我一个错误的错误等等。
有谁能告诉我如何更改android模拟器的DNS配置,以便它发送主机名而不是IP地址?
或解决此问题的任何其他方法。
由于
答案 0 :(得分:1)
启动模拟器时,可以使用-http-proxy选项从命令行配置代理。在这种情况下,您可以使用以下格式之一指定代理信息:
http://<machineName>:<port>
或
http://<username>:<password>@<machineName>:<port>
-http-proxy选项强制模拟器将指定的HTTP / HTTPS代理用于所有传出TCP连接。目前不支持重定向UDP。
或者,您可以将环境变量http_proxy定义为要用于的值。在这种情况下,您无需在-http-proxy命令中指定值 - 模拟器在启动时检查http_proxy环境变量的值,并自动使用其值(如果已定义)。
您可以使用-debug-proxy选项来诊断代理连接问题。
您可以在此处获得有关此主题的更多详细信息:
https://developer.android.com/studio/run/emulator-networking.html
答案 1 :(得分:0)
没有办法改变android模拟器的dns配置,可以获取主机名而不是IP地址,使用代理的唯一选择是在其他SO线程here上解释。
我确信这些数据包来自Instagram和/或他们可能会出于安全目的而使用某些防火墙。
答案 2 :(得分:0)
答案 3 :(得分:0)
对于Linux用户
我们无法使用从android studio开始的模拟器 我们必须使用这2个命令从终端启动模拟器
首先转到android sdk tools dir
$ cd /home/..../Android/Sdk/tools
第二次使用此cmd启动模拟器
./ emulator -avd Emulator_name -http-proxy http:// Ur ip address : port /
Emulator_name :打开AVD Manager第二列,您将获得模拟器名称,接下来您必须使用下划线替换名称之间的空格
喜欢 Nexus 5 API 22 - &gt;的 Nexus_5_API_22 强>
例如:$ ./emulator -avd Nexus_5_API_22 -http-proxy http://12.1.0.222:8888/
答案 4 :(得分:0)
在您的模拟器中 - 转到设置 - &gt;网络和互联网 - &gt; mobileNetwork - &gt; AccessPointNames。然后选择您的网络进行编辑并放入Charles计算机的IP和端口。
请记住使用poxy打开模拟器。 emulator with proxy
答案 5 :(得分:-2)
您可以使用'ping'命令获取IP地址。