Android代理设置是否适用于设备上的所有应用?

57

如果你为Android设备设置代理服务器,那么它们会适用于设备上的所有应用程序,包括浏览器吗?还是仅适用于浏览器?

我之所以问这个问题,是因为当你要更改Android设备上的代理设置时,会出现以下信息,让我感到困惑:

"HTTP proxy use by browser but may not be used by other applications"
7个回答

74

不,它们并非全局应用,没有 root 权限就无法强制所有应用程序使用代理。你发现的信息之所以用这种方式表述,是因为由应用程序创建者尊重代理设置并使用它们或者做错事情并忽略它们。

如果您恰好拥有 root 权限,可以使用这个应用将代理设置应用于所有应用程序和活动。

这不是默认行为的原因是它可能会带来一些安全风险。如果所有流量都可以被重定向,用户可能会通过某些不良代理服务器发送全部流量,因此它们仅在应用程序明确要求时才允许应用程序使用代理。


1
有趣。这解释了很多问题。谢谢。 - Micro
1
有没有一种方法可以让应用程序通过代理访问互联网,而无需 root 权限。可以通过指定此代理服务器受信任并仅传递互联网数据包来实现。 - shiv garg
是的。天啊,我太高兴了。谢谢你的回答。 - Dylan Pierce
3
哈哈,在 iPhone 上,你可以轻松地为所有东西配置代理,对于开发来说非常酷。 - Alexander Danilov
2
我已经在Android 8.1-RC1上尝试了ProxyDroid,但它一直崩溃。 - paolov
显示剩余6条评论

14

很遗憾Postern不再在Play商店上了,但它仍然可以在Apkpure上找到。 - Austin Burk

3

不确定哪些应用程序会或不会使用代理。我有几个安卓应用程序,它们忽略了代理。

我通过使用一个名为drony的应用程序来解决这个问题,该应用程序不需要对设备进行root处理。我有几个应用程序,它们都可以愉快地代理到drony,而无需对应用程序进行任何操作。然后,我将drony设置为代理到我本地机器上的fiddler。设置说明都在这里:

在不进行root的情况下,在android设备上设置全局代理!

4
我阅读了链接中的文章,但不理解为什么在Wifi设置中代理到本地主机比任何其他代理方式都更成功。如果一个应用程序不支持代理,那么它不会管本地主机代理和其他代理方式是一样的吗? - Oren
@Oren,可能与Android本地流量路由的工作方式有关,或者localhost使系统表现出了一些不同(因为localhost有时是设备本身的回环连接,实际上并没有经过网络返回主机,因为它是本地的,所以会走捷径)。 - David

2

正如朱利安所说,一些应用程序或应用程序内的SDK不具备代理感知能力。

我曾亲身经历过这种情况。有一个SDK不显示我的Burp工具,我无法理解原因。最终我发现它不具备代理感知功能。

如朱利安所说,您可以使用Android应用程序来解决此问题。另一种选择是我使用的隐身代理。请查看:https://portswigger.net/burp/help/proxy_options_invisible.html


朱利安的回答很有见地,但您是否知道是否有参考链接进一步阐述该主题?看这些链接将比采纳“原样”应答更有帮助。关于这个预期行为的文档以及如何让应用程序请求使用代理等信息也会非常有帮助。 - David
你的情况是第三方SDK还是自定义SDK? - David

0

我猜许多用户会在这里寻找捕获和分析安卓应用程序流量的方法,尽管OP没有明确提到。所以请原谅我的回答只有50%符合问题:

我发现https://emanuele-f.github.io/PCAPdroid是一个很好的工具,可以捕获和分析应用程序流量。它是开源的,仍然可以在Play商店中获取,并且仍在积极发展(截至2023年)。

它不需要任何root权限,并且有方法甚至可以窥视加密流量(TLS)。您可以将其安装在要分析的应用程序相同的Android设备上。


0

如果您通过Wifi->设置->代理(手动)更改代理设置,如设备所示,显然不可能在所有应用程序中应用。尽管如此,使用Drony应用程序,无需对设备进行root,也可以实现这一结果。

Drony一直更新至今天(2023年1月23日),甚至允许按需要过滤URL。

  1. 在打开Drony之前,配置您的wifi网络并将代理主机名设置为localhost,端口设置为一个空闲端口,例如2000
  2. 从Play商店下载Drony并接受其使用所需的所有权限;
  3. 在设置选项卡中,将代理端口更改为步骤1中定义的端口2000; enter image description here
  4. 在“网络”下,点击Wi-Fi,选择步骤0中配置端口的网络。 enter image description here
  5. 根据需要更改主机名、端口、用户名和其他设置。 enter image description here
  6. 返回到日志选项卡,点击“开启”,就完成了! enter image description here

您可以在“筛选器”选项卡中检查筛选后的连接,在“连接”选项卡中检查所有连接。

祝你们好运!


Drony无法下载,因为它只适用于较旧版本的安卓系统。我使用的是安卓11.0。你知道其他类似的应用吗? - undefined
我正在使用Android 12(三星Note 10+)上的Droni @GauthierButtez。 - undefined

-2

这不正确。几乎所有的应用程序都会遵守HTTP代理设置。Xamarin.Android通常不会,但您可以在WebClient中覆盖此设置。

附注:如果失败了,您可以在所有情况下使用Wireshark来完成此操作。


你为什么认为Xamarin.Android会忽略Android系统代理? - Sam Debruyn

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