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

标签 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 手动更改它。为此,我做了以下工作:

  • global 表中插入了一个值,其中 _id=99、name='http_proxy' 和 value='[proxy_host]:[proxy_port]'(显然替换了 [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 是正确答案的任何人:我已经对我的设备进行了 root,但仍然收到来自 ProxyDroid 的消息,说需要 root 设备。这正常吗?)

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

最佳答案

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

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

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

关于android - 如何以非编程方式在 Android 上配置代理排除列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36200703/

相关文章:

Mozilla Firefox 中的 javascript 错误

html - Firefox <audio>不断下载数据

android - 无法运行或调试项目,但 gradle build+install 工作

jquery - Firefox Web 开发者工具栏导致奇怪的行为

Android 翻译动画进度回调

php - Apache proxfy_fcgi - 将请求分派(dispatch)到时出错

java - 在负载均衡器代理服务器的情况下如何获取实际 URL

ios - 我可以在 iOS 应用程序中设置设备级代理吗?如何?

android - 如何让 GridView 在其 LinearLayout 父级中居中?

java - 如何在 Android camera2 中有效地将每个 YUV_420_888 帧转换为 RGB(例如,使用 renderscript yuv2rgb.rs)?