参考文档
1.Proxy
2.ChromeSetting
照顾像我这样不翻墙、E文差的伙伴。。
声明权限
{ "permissions": ["proxy"] }
基本方法
chrome.proxy.settings = { clear: function (details, callback) {}, get: function (details, callback) {}, set: function (details, callback) {}, onChange: Event }
实现原理
先看下chrome.proxy.settings.get
的源码:
chrome.proxy.settings.get = function (details, callback) { var getSchema = this.functionSchemas.get.definition.parameters; validate([details, callback], getSchema); return sendRequest('types.ChromeSetting.get', [prefKey, details, callback], extendSchema(getSchema)); }其他源码也类似,就不贴了。通过代码可以看出,其实。。只是对
ChromeSettiing
进行了封装而已。。
获取代理设置
chrome.proxy.settings.get({}, function(config){ console.log(config.value); })其中第一个参数为要获取的策略,比如在隐身模式下的设置等,具体可以参考文档2
清除代理设置
chrome.proxy.settings.clear({},function(){})其实就是把代理设置为默认
设置代理
// 代理配置 var config = { mode: 'fixed_servers', // mode模式有几种: // 1.direct 直接连接 // 2.auto_detect 使用WPAD设置 // 3.pac_script 使用PAC脚本 // 4.fixed_servers 使用固定代理服务器 // 5.system 使用系统设置 rules: { proxyForHttp: { scheme: 'http', // 代理方法 host: '127.0.0.1', // 代理地址 port: 8080 // 代理端口 }, // rules规则有几种: // 1.singleProxy // 用于所有请求协议 // 2.proxyForHttp // 用于http协议 // 3.proxyForHttps // 用于https协议 // 4.proxyForFtp // 用于ftp协议 // 5.fallbackProxy // 用于其他协议,如上未选协议 // 6.bypassList // 白名单列表,为不使用代理的url数组 } } // 设置代理 chrome.proxy.settings.set({ value: config, // 配置,为我们所定义 scope: 'regular' // 类型,可参考文档2 }, function(){ console.log("设置完毕后的回调函数"); })
设置代理:pacScript
var pacJs = ' function FindProxyForURL(u, h){ return "PROXY 127.0.0.1:8080"; } '; var config = { mode: 'pac_script', pacScript: { data: pacJs } }; // ..后面相同设置
其他设置日后再添~