您当前的位置:首页 > 计算机 > 软件应用 > 浏览器应用

一起来做 Chrome 扩展之使用代理 proxy

时间:12-14来源:作者:点击数:

这次来看看 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 方法,就直接切换了代理。所以加上参数或使用全局变量都可以解决这个问题。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐