使用Google Chrome扩展程序设置代理

时间:2013-02-22 09:04:57

标签: javascript json google-chrome google-chrome-extension google-chrome-devtools

我正在尝试构建一个chrome扩展程序,可以在启动浏览器时更改代理设置。我已经按照Chrome扩展程序文档但仍然没有成功。

的manifest.json

   {

      "manifest_version": 2,

      "name": "Proxy",
      "description": "Proxy on 127.0.0.1:8080",
      "version": "1.1",
      "background": {
      "scripts":["background.js"]
      },
      "browser_action": {
            "default_icon": "icon.png",
            "popup":"popup.html"
        },
    "permissions": [
        "tabs",
        "http://*/*",
        "https://*/*",
        "notifications",
        "contextMenus",
        "history",
        "background",
        "proxy"
    ],
    "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
    }

backround.js

chrome.windows.onCreated.addListener(function() {

var config = {
  mode: "fixed_servers",
  rules: {
    proxyForHttp: {
      scheme: "http",
      host: "127.0.0.1",
      port:"8080"
    },
    bypassList: ["foobar.com"]
  }
};
chrome.proxy.settings.set(
    {value: config, scope: 'regular'},
    function() {});

});

以上代码不起作用......

6 个答案:

答案 0 :(得分:2)

我从昨天起就一直在尝试一切,终于找到了我的问题;我不得不改变

proxyForHttp: - > singleProxy:

port:'8080' - > port: 8080

答案 1 :(得分:1)

背景页面应该不是问题。您的代码位于窗口对象上的onCreated事件中。您不能保证在创建第一个窗口时加载扩展名。

只需移除事件并运行代码,然后在初始化扩展时运行一次。

答案 2 :(得分:1)

将行port:"8080"更改为port:8080,它会正常工作。

<小时/>

精密

您可以在chrome:// net-internals / #s proxy。

中查看有效设置

精密

如果通过PAC脚本,在脚本代码错误,chrome.proxy.settings.set处理程序仍然运行,即使代理静默失败。这可以在chrome:// net-internals /#events。

中检测到

精密

This page声称PAC脚本中的console.log消息可以在net log中找到,但它似乎不起作用。

答案 3 :(得分:0)

我认为你不能使用Background.js中的chrome.proxy API。 我用弹出式扩展程序(使用文档中的代码示例)做了同样的事情,它完美地工作......

答案 4 :(得分:0)

我尝试了你的代码,chrome给我提示端口号是整数,但不是字符串 并改变这一点 端口:&#34; 8080&#34; 至 端口:8080,它工作 但我没有按照你的所有代码,删除它 chrome.windows.onCreated.addListener(function(){ ,只留下此功能中的内容 3ks为您的问题!

答案 5 :(得分:0)

“启动浏览器时”

您应该使用Chrome.Runtime代替chrome.windows.onCreated。 使用chrome.runtime.onStartup,因此从无打开浏览器的情况下,将启动hrome.runtime.onStartup。

  

onStartup   首次安装此扩展程序的配置文件启动时触发。启动隐身配置文件后,即使此扩展程序以“拆分”隐身模式运行,也不会触发此事件。

会是这样

chrome.runtime.onStartup.addListener(function() {
var config = {
  mode: "fixed_servers",
  rules: {
    proxyForHttp: {
      scheme: "http",
      host: "127.0.0.1",
      port:"8080"
    },
    bypassList: ["foobar.com"]
  }
};
chrome.proxy.settings.set(
    {value: config, scope: 'regular'},
    function() {});

});

您还可以在安装/更新扩展程序时使用onInstalled ...