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

时间:2016-03-24 12:53:51

标签: android firefox proxy firefox-addon android-4.4-kitkat

我正在运行Android Kit-Kat 4.4.2。我已经能够使用data / data / com.android.providers.settings / databases中的settings.db数据库配置全局代理,我已经使用adb手动修改了这个数据库。为此,我做了以下事情:

  • 使用_id = 99,name ='http_proxy'和value ='[proxy_host]:[proxy_port]'将值插入 global 表中(显然替换[proxy_host]和[proxy_port]用适当的值)。
  • 重新启动。这会自动在 global 表中生成名称为:global_http_proxy_host,global_http_proxy_port,global_proxy_pac_url和global_http_proxy_exclusion_list的行。
  • global_http_proxy_host和global_http_proxy_port行已自动获得正确的设置(分别为[proxy_host]和[proxy_port])。其余的都是空的。

代理有效。作为参考,我使用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会重置,以便它再次为空。

我尝试过对此属性进行网络搜索,但我只是获取源代码的链接,这在此实例中没有帮助。

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

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

使用Android应用程序是解决此问题的可接受方案。我已经安装了ProxyDroid并配置了代理,但据我所知,这没有任何作用(或者Firefox只是不尊重代理)。 (对于任何可能认为使用ProxyDroid的人来说,这是正确的答案:我已根植我的设备但仍然从ProxyDroid获取消息,说明需要有根设备。这是正常的吗?)

我是否有办法以非编程方式在Android中配置代理排除列表?

1 个答案:

答案 0 :(得分:1)

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

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

运行棒棒糖,我的排除列表在重新启动后保留,当我删除了http_proxy并且只依赖于全局设置。