ChatGPT解决这个技术问题 Extra ChatGPT

如何设置 Android 模拟器代理设置

我想在 Android 模拟器中使用浏览器,并且我想在我的机器上使用代理设置。我该如何设置?

阅读了非常好的 Android 手册,他们告诉我应该使用以下命令启动 Android:

emulator -avd myavd -http-proxy http://168.192.1.2:3300

但我仍然无法使用模拟器浏览器。请注意,我正在使用代理服务器的 IP 地址。

我究竟做错了什么?


a
axel22

最简单和最好的方法是执行以下操作: Android Emulator 2.2 已完成此操作

单击菜单 单击设置 单击无线和网络 转到移动网络 转到接入点名称 这里您将出现 Telkila Internet,单击它。在编辑接入点部分,输入“代理”和“端口”,还提供用户名和密码,其余字段留空。


不适用于在 localhost 上运行 Fiddler2 或其他代理的最常见用例......可能会添加端口转发,但这也很痛苦
它不适用于 Android 模拟器 2.3.3,但适用于我的模拟器 4.1.2。
这不再适用于 android 5 图像 (api 21)
这个答案应该是公认的!在 Mac 上与 Burpsuite 一起使用!
这也适用于 Volley!添加以防万一有人对此感到厌烦。
d
dmotta

https://i.stack.imgur.com/A2ajQ.png

运行配置>安卓应用>应用程序>目标>其他模拟器命令行选项:-http-proxy http://xx.xxx.xx.xx:8080


那是什么eclipse版本?我没有看到这个界面:(
还配置你的模拟器
对于具有用户名和密码的代理,请使用以下格式:-http-proxy http://username:password@host:port
在我的情况下出现错误 emulator is not recognized as a command..我需要在 PATH 变量中添加任何内容吗??我正在使用 Android Studio 1.0.1 并在我的办公系统中有代理。
C
Chris Gunawardena

https://i.stack.imgur.com/MyZ1e.jpg


为我工作。我的环境:MAC OS 环境 + android 模拟器和 Windows 7 与提琴手代理并行
这个设置对我从来没有用过。我总是必须用 -http-proxy 命令启动模拟器才能让它工作。
这个菜单有一个反复出现的错误,从 2017 年中期开始让我抓狂。有时它有效,有时不在同一个 AVD 上。只有重新创建 AVD 才能可靠地提供帮助。有时代理会在会话中间掉下来!在公司环境中,这意味着我会因为那件事而被锁定在我的帐户之外。
不过,看起来我现在已经找到了解决方案:即使我的代理需要身份验证,像上面那样配置假 wifi 热点以使用代理也会有所帮助,而该热点配置根本没有。只是 URL 和端口有助于立即恢复丢失的连接。
Y
Yadvendar

我在服务器名称中删除 http 后尝试过,它对我有用。

emulator -avd myavd -http-proxy 168.192.1.2:3300


这仅适用于浏览器,但没有应用程序请求通过代理:(
@FelipeSabino 你能弄清楚吗?我面临同样的问题。
k
kuester2000

这对浏览器没有帮助,但您也可以在代码中定义代理以与 HTTP 客户端一起使用:

// proxy
private static final String PROXY = "123.123.123.123";
// proxy host
private static final HttpHost PROXY_HOST = new HttpHost(PROXY, 8080);
HttpParams httpParameters = new BasicHttpParams();
DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, PROXY_HOST);

您不应该将“127.0.0.1”作为字符串代理。
kuester2000 在这里看看我的问题stackoverflow.com/questions/31723494/…
M
Maher Abuthraa

在 Android Studio 上:

单击应用程序菜单下的编辑配置

https://i.stack.imgur.com/Kh7q3.png

转到 App 或 Android App(作为默认设置)点击 Debugger 点击 LLDB 启动命令 点击 + 添加你的命令 -http-proxy http://168.192.1.2:3300

https://i.stack.imgur.com/SlFPC.png

就是这样。

如果你想使用你的 PC IP 更酷的东西,使用这个命令:

-http-proxy "$(ipconfig getifaddr en0)":8888 在 MacOS 上

-http-proxy "$(hostname -i)":8888 在 Linux 上

====== 2022 年 2 月 23 日更新 ======

目前我正在使用这些命令来启用/禁用代理:

adb shell settings put global http_proxy 127.0.0.1 :8889

或动态地将我的电脑作为主机

adb shell settings put global http_proxy $(ipconfig getifaddr en0) :8889

要禁用该代理,请使用:

adb shell settings put global http_proxy :0

没有为我工作。我可以访问模拟器浏览器上的链接,但不能通过应用程序访问。
@RohitSingh 你可以试试终端: adb shell settings put global "http_proxy 192.168.0.111:8888" 。您可以通过 $(ipconfig getifaddr en0) 从当前机器获取 IP
b
biegleux

在尝试设置环境变量 http_proxy 之前我没有运气

http://developer.android.com/tools/help/emulator.html

“如果未提供 -http-proxy 命令,模拟器会查找 http_proxy 环境变量并自动使用与上述格式匹配的任何值。”


T
Timmy O'Mahony

为了设置代理服务器,我们需要设置 APNS 设置。去做这个:

转到设置 转到无线和网络 转到移动网络 转到接入点名称。使用菜单添加新的 apns Set Proxy = localhost Set Port = 您用来制作代理服务器的端口,在我的情况下是 8989 用于设置名称和 apn 这里是链接:根据您的 sim 卡,您可以看到表格


“通过代理服务器的身份验证不成功”代理不需要身份验证,并且根据 tcp 转储从未看到任何请求。
M
Mahesh

最简单的方法是从模拟器中删除默认 APN(在我的情况下是 T-mobile)并使用您的代理设置创建新的 APN。

注意:我已经尝试了所有命令行选项,还尝试为模拟器默认 APN 设置代理,但没有任何效果。


我为此奋斗了一个多月,但终于让它工作了......感谢@usergo,他的回答给了我这个线索
G
Gamma.X

在您的主机中安装 ProxifierSetup proxifier to use your proxy。你不需要做任何其他事情。你会好起来的。 Proxifier 捕获来自系统(包括 android 模拟器)的调用,并通过配置的代理对其进行路由。


请注意,Proxifier 是必须购买的商业软件。
u
ultraon

对于某些 leanback (TV) 模拟器,您可以使用 cmd:

adb shell settings put global http_proxy 10.0.2.2:8888

8888 - 是本地机器(主机)上的代理端口,因此在本地机器上,http 代理将是 127.0.0.1:8888

要删除代理(在 cmd 行中按顺序运行):

adb shell settings delete global http_proxy

adb shell settings put global global_http_proxy_host ""

adb shell settings put global global_http_proxy_port ""


S
Siddharth

我在 Windows 64 位上使用 Eclipse:执行以下步骤...它对我有用:窗口 -> 首选项 -> Android -> 启动 -> 默认模拟器选项 -http-proxy="http:/ /10.1.8.30:8080"

在你的日食窗口中


J
Jerokdeep

有时即使设置了所有它也可能无法正常工作。我已经尝试了所有的方法,比如

在 Emulator APN 中设置代理 通过 eclipse 首选项设置它 --> Android --> 启动

没有任何效果。然后我做了以下立即奏效。

转到 eclipse 运行 --> 运行配置。在 Android 应用程序下,您可以看到您的应用程序。现在,在右侧单击目标选项卡。在“其他模拟器命令行选项”下添加以下内容。

-dns-server <本地机器上最多三个的DNS服务器> -http-proxy http://<你的代理>:<你的代理端口>

这里的问题是 DNS 服务器设置应该来自您的本地系统。转到 cmd 提示符并运行 ipconfig 以检查您的 DNS 服务器。与代理服务器和端口相同。任何适用于您的浏览器的东西都应该放在这里。


J
Johan Franzén

根据您用于运行模拟器的环境,检查日志以了解模拟器是如何启动的。我的开始是:

C:\Users\johan\AppData\Local\Android\Sdk\tools\emulator.exe -netdelay none -netspeed full -avd Nexus_5X_API_23

然后你添加 -http-proxy 选项,在我的例子中:

C:\Users\johan\AppData\Local\Android\Sdk\tools\emulator.exe -netdelay none -netspeed full -avd Nexus_5X_API_23 -http-proxy 192.168.0.22:8888


A
Anil Chahal

如果您在代理环境下并且模拟器中没有运行互联网,请不要更改模拟器中的任何设置。转到您的 Eclipse 项目,右键单击,单击“运行方式”,然后单击“运行配置”。在弹出窗口中选择“Target”并向下滚动一点,你会发现“Additional Emulator Command Line Options”在我输入的“Additional Emulator Command Line Options”中输入您的代理设置

-http代理http://ee11s040:Om1l2ng3d4n2!08@hproxy.iitm.ac.in:3128

https://i.stack.imgur.com/oelqY.png

然后启动一个新的模拟器。


u
usergo

使用 ntlm 身份验证设置公司代理的最佳方法是使用 cntlm:

http://cntlm.sourceforge.net/

在C:\Program Files\Cntlm\cntlm.ini中安装配置默认cntlm,监听127.0.0.1:3128

在 android 设备中设置一个新的 APN,代理主机 10.0.2.2 和端口 3128 10.0.2.2 是主机环回接口的特殊别名(开发机器上的 127.0.0.1)

另见http://developer.android.com/tools/devices/emulator.html#emulatornetworking

问候


j
josch

您确定您的地址是 168.192.1.2 而不是 192.168.1.2?

注意交换的前两个数字。


A
Alexei

在控制台中启动下一个命令:

emulator -avd emulator_name -http-proxy you_proxy_ip_address:8080

u
user1981081

拥有 AVD 安卓模拟器:

打开模拟器(“..\android-sdk\AVD Manager.exe”)转到工具转到代理设置上的选项:

在第一个字段(HTTP 代理服务器)上仅设置您的代理的 IP 地址(XXX.XXX.XXX.XXX)在第二个字段上设置您的代理端口(例如:8080)

然后,单击窗口上的关闭并启动模拟器

---- 添加...然后亚历克斯步骤适用于我的情况:

Click on Menu
Click on Settings
Click on Wireless & Networks
Go to Mobile Networks
Go to Access Point Names
Here you will Telkila Internet (or other name), click on it.
In the Edit access point section, input the "proxy" and "port"

这仅设置 SDK 管理器的代理设置,用于下载 SDK 文件。
S
Sachini Samarasinghe

您可以在您的应用程序中设置代理。这可以使用设置类来完成。例如,您可以在“onCreate”方法中添加以下行。

 Settings.System.putString(getContentResolver(), Settings.System.HTTP_PROXY, "myproxy:8080"); 

要更改代理设置,您必须在 AndroidManifest.xml 文件中拥有 android.permission.WRITE_SETTINGS 权限。


I
Iman

对于 2022,您可以使用如下 adb 命令:

adb shell settings put global http_proxy "your_PC_IP:PORT_YOU_LISTEN"

您可以使用以下命令禁用您的代理:

adb shell settings put global http_proxy :0