一起来做 Chrome 扩展之使用代理 proxy
在这么一个高墙林立的地方,不会翻墙肯定是不行的,所以这次就来看看 chrome extension 如何简单的控制 chrome 代理的。
方法
chrome.proxy.settings.set({value: {}, scope: 'regular'},function() {});
这是文档里的方法,很简单,当然要控制代理,还得加一些东西,比如 value 对应的值
var config = {
mode: "pac_script",
pacScript: {
data: pac
}
};
config.mode 表明使用的是 pac_script,什么是 pac_script,可以看看 维基百科:代理自动配置,可以把它简单的理解为一个 JS 函数,FindProxyForURL(url, host),也就是 pacScript.data 对应的值。它虽然是一个 JS 函数,但是是以字符串的形式传给它的。具体情况如下:
var pac = "var FindProxyForURL = function(url, host){"+
"if(shExpMatch(url, '*amazon\.com*')){"+
"return 'PROXY 192.168.0.1:9000';"+
"}"+
"return 'DIRECT'"+
"}";
很好理解的代码,如果匹配到 amazon.com 就使用代理 192.18.0.1:9000,如果没有匹配到,直接返回,等于是什么都不做。shExpMatch 函数用来匹配 url 或者 host,匹配的方式和 DOS 的通配符相似,如果有多个匹配,直接写或||就可以了,如要匹配 amazon.com 和 google.com
var pac = "var FindProxyForURL = function(url, host){"+
"if(shExpMatch(url, '*amazon\.com*')||"+
"shsExpMatch(url, '*google\.com*')"+
"){"+
"return 'PROXY 192.168.0.1:9000';"+
"}"+
"return 'DIRECT'"+
"}";
这样,把它们结合一下,写成一个方法 setProxy()
function setProxy(){
var pac = "var FindProxyForURL = function(url, host){"+
"if(shExpMatch(url, '*amazon\.com*')||"+
"shsExpMatch(url, '*google\.com*')"+
"){"+
"return 'PROXY 192.168.0.1:9000';"+
"}"+
"return 'DIRECT'"+
"}";
var config = {
mode: "pac_script",
pacScript: {
data: pac
}
}
chrome.proxy.settings.set({value: config, scope: 'regular'}, function(){});
}
在 background 中调用一下 setProxy() 方法,就启用了代理配置,如果打开 amazon.com 或是 google.com,就会使用代理去打开,如果是其它网站,就不使用代理。
如何切换代理
代理已经可以正常使用了,那如果有多个代理,怎么切换呢?其实很简单,结合上一篇 《本地存储localStorage》 闭着眼睛也能想到,使用 localStorage 来存储代理信息不就行了,把IP和端口转给 setProxy,加执行一下 setProxy 方法,就直接切换了代理。所以加上参数或使用全局变量都可以解决这个问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 一行代码实现 url parse
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论