如何从Chrome扩展程序中获取系统代理设置?

3

我需要为我的Chrome扩展程序制定定制化的代理设置,以便特定域名的流量通过代理服务器传输,而所有其他用户流量则按照默认系统设置正常进行。根据Chrome API文档,唯一的方法是使用pac_script(如果我错了,请纠正我)。因此,代码将类似于以下内容:

var config = {
mode: "pac_script",
pacScript: {
data: "function FindProxyForURL(url, host) {\n" +
    "  if (dnsDomainIs(host, 'mydomain.com') )\n" +
    "    return 'SOCKS5 10.0.0.1:1234';\n" +
    "  return 'DIRECT';\n" +
    "}"
}};
chrome.proxy.settings.set({value: config, scope: 'regular'});

然而,pac_script 没有使用系统代理设置来路由流量的选项(只有“DIRECT”表示它会跳过系统设置)。我想通过 chrome.proxy.settings.get 来获取系统代理设置,但该函数返回一个对象,其中 mode = system,没有任何有用信息。

有人知道如何从扩展程序中获取系统代理设置吗?或者对处理原始问题有建议吗?


根据我找到的相关问题,他们也在Chrome扩展中使用chrome.proxy来进行代理设置,这是官方API。如果你发现pac_script没有路由流量的选项,那就意味着它不支持此功能。我建议你在Chrome扩展组中提出这个问题,这样Chrome扩展专家可以帮助你解决这个问题。 - KENdi
1个回答

4
您可以通过以下方式获取它:
chrome.proxy.settings.get(
      {'incognito': false},
      function(config) {
          console.log(JSON.stringify(config));
      });

它应该会显示类似于这样的东西:
{
  "levelOfControl":"controlled_by_this_extension",
  "value":
   {
    "mode":"pac_script",
    "pacScript": {
                   "data": "function FindProxyForURL(url, host) {\n     
                               return \"PROXY 10.0.0.1:1234;\";\n}",
                   "mandatory": false
     }
    }
}

阅读文档获取更详细信息:https://developer.chrome.com/extensions/proxy


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