参考文档
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
}
};
// ..后面相同设置
其他设置日后再添~