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

Posted

技术标签:

【中文标题】Chrome 扩展程序 - 以编程方式绕过代理【英文标题】:Chrome extensions - bypass proxy programmatically 【发布时间】:2017-05-10 23:42:35 【问题描述】:

我正在开发一个扩展,其中代理是通过我的扩展使用 chrome 扩展代理 api(chrome.proxy.settings) 设置的。一切正常,我的代理服务器上的所有流量当然除了bypass list 中的流量。

现在我的问题是:How do we bypass the proxy set dynamically? 我的意思是有没有办法以编程方式绕过某些 URL 的代理(不在代理绕过列表中)?我了解绕过列表包含的 url/模式被绕过。但我需要一些 url 来绕过代理。

有人遇到过类似的要求吗?任何动态绕过相同的直接方法或任何解决方法都将不胜感激。

【问题讨论】:

您可能想检查Debugging problems with the network proxy 看看它是否有帮助。如果您不想使用它,它提到了覆盖系统代理设置的给定选项。除此之外,还可以在Proxy settings and fallback找到更多信息。 感谢@Teyam。让我看看这些。 我浏览了这些链接,但它们似乎对我没有帮助。 【参考方案1】:

在旅途中绕过代理? 您可以从 Web 服务器中提取任何指定的地址。有什么问题?

例如:

chrome.windows.onCreated.addListener(function() 
  var config = 
      mode: 'fixed_servers',
      rules: 
        proxyForHttp: 
          scheme: 'http',
          host: '127.0.0.1',
          port: '80'
        ,
        bypassList: []
      
    ,
    proxyByUrl = 'path/to/proxiesByUrl?path=' + window.location.href;

  $.get(proxyByUrl, function(data) 
    // Set up current proxy, dependent on request URL
    config.rules.proxyForHttp.host = data.proxyAddress;
    config.rules.proxyForHttp.port = data.proxyport;
    // Excluded URL's for this proxy
    bypassList.push(data.bypassUrls);
  );
);

匹配所有匹配模式的主机名。一个领先的“。”被解释为“*.”。 示例:“foobar.com”、“foobar.com”、“.foobar.com”、“foobar.com:99”、“https://x..y .com:99"。

有关 bypassList 的更详细模式,read the official documentation。

【讨论】:

以上是关于Chrome 扩展程序 - 以编程方式绕过代理的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Chrome 扩展程序中以编程方式关闭 gmail 撰写对话框

绕过 chrome 扩展中的 CORS 限制 [重复]

如何加载/构建Chrome App / Extension并以编程方式运行

在 Chrome Web Store URL 的 Chrome 扩展中绕过 X-Frame-Options

如何安装chrome扩展,以json-handle为例

从脚本安装 Google Chrome 扩展