如何从chrome扩展获取系统代理设置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从chrome扩展获取系统代理设置?相关的知识,希望对你有一定的参考价值。

我需要为我的chrome扩展程序进行自定义代理设置,以便特定域的流量通过代理服务器,而所有其他(用户)流量通常使用默认系统设置。根据chrome API文档,唯一的方法是使用pac_script(如果我错了,请纠正我)。因此,代码将是这样的:

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

但是,pac_script没有使用系统代理设置路由流量的选项(仅“DIRECT”,这意味着它将跳过系统设置)。我想使用chrome.proxy.settings.get获取系统代理设置,但是这个函数返回一个没有有用信息的mode = system对象。

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

答案

你可以得到它

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) {
     
                               return "PROXY 10.0.0.1:1234;";
}",
                   "mandatory": false
     }
    }
}

阅读文档更详细的https://developer.chrome.com/extensions/proxy

以上是关于如何从chrome扩展获取系统代理设置?的主要内容,如果未能解决你的问题,请参考以下文章

如何为chrome浏览器设置socks5代理

如何从设置中获取数据并发送到此片段

如何在Windows下全局使用Chrome代理?

Chrome 扩展程序 - 以编程方式绕过代理

如何从 chrome 扩展访问 iframe?

在 chrome 扩展中,如何从当前 chrome 用户以外的 gmail 用户获取访问令牌?