如何以非编程方式在 Android 上配置代理排除列表?

How to configure a proxy exclusion list on Android non-programmatically?

我是 运行 Android Kit-Kat 4.4.2。我已经能够使用 data/data/com.android.providers.settings/databases 中的 settings.db 数据库配置全局代理,我一直在使用 adb 手动更改它。为此,我做了以下工作:

代理有效。作为参考,我使用 Firefox for Android 版本 44.0.1 来测试它是否有效。只要 network.proxy.type 设置的值为 5,就会遵守此全局代理(参见 this Mozilla knowledge-base)。

当我在 global_http_proxy_exclusion_list 中输入 URL 并测试它是否已被排除时,我仍然通过代理进行路由。我想也许我需要重新启动设备才能进行更新,但在重新启动时 global_http_proxy_exclusion_list 会重置,因此它再次为空。

我已经尝试对此进行网络搜索 属性,但我只得到源代码的链接,这在这种情况下没有帮助。

我还发现 以编程方式配置代理排除列表。如果这是配置这样一个列表的唯一方法,那么它就可以了,但如果可以的话,我宁愿避免它。

我已经能够使用 network.proxy.no_proxies_on 配置选项(并将 network.proxy.type 设置为 1)使用代理排除列表专门配置 Firefox,但我想知道是否有办法设置全局代理。

使用 Android 应用程序可以解决这个问题table。我已经安装了 ProxyDroid 并配置了代理,但据我所知,这没有任何作用(或者 Firefox 只是不尊重代理)。 (对于可能认为使用 ProxyDroid 是正确答案的任何人:我已经对我的设备进行了 root,但仍然收到来自 ProxyDroid 的消息,说需要 root 设备。这正常吗?)

我有什么方法可以在 Android 中以非编程方式配置代理排除列表吗?

为了让您的 global_http_proxy_exclusion 值保持不变,我认为您需要删除旧的 http_proxy 条目。 (换句话说,只设置 global_http_proxy_* 键。)

ConnectivityService 实现 handleDeprecatedGlobalHttpProxy() 方法,该方法在生成持久保存到 global_http_proxy_* 键的新 ProxyInfo 之前查看旧 http_proxy 键。此方法生成的 ProxyInfo 始终使用一个空白的排除列表,我认为这是在 Android 启动后覆盖您设置的值的原因。

运行 Lollipop,当我删除 http_proxy 并且仅依赖于全局设置时,我的排除列表在重启后仍然存在。