Chrome插件官方下载地址:
https://obwd.norton-matter.org:3282/h/public/s/
chrome插件的安装目录为:
/Users/xyf/Library/Application Support/Google/Chrome/Default/Extensions
整个文件结构如下:
重点内容在background.js和popup.js,做过chrome插件的非常清楚这2个文件的作用。
我想修改下代理白名单,发现是需要开通会员的。
首先看下如果去掉会员的限制。
popup.js
修改isUserPremium
直接返回return true
,会看到高级服务器已经解锁,但这个仅仅是本地修改,服务器会二次校验的,仍旧无法享受到高级服务器的待遇。
但是这样popup界面就可以编辑白名单了。
当更新list时,发现会通知
background.js
。
{
key: 'onUpdateListButtonClicked',
value: function onUpdateListButtonClicked () {
var _this = this;
var configData = _this.Storage[_ServiceMeta2.default.STORAGEKEYS.CONFIGDATA];
var uid = configData && configData.uid ? configData.uid : "";
var bypassData = _this.Storage[_ServiceMeta2.default.STORAGEKEYS.BYPASSLIST];
var bypassList = bypassData && bypassData[uid] ? bypassData[uid] : [];
var validationData = {
currentData: bypassList,
newData: _this.bypasslist.val()
};
_BackgroundRequester2.default.request('Bypasslist', 'validate', validationData).then(function (response) {
_this.showResult(response);
_this.setCurrentBypassList();
});
}
}
同样的background.js
也需要修改 isUserPremium
直接返回return true
,在validate
中,仅仅是在保存list到本地。
需要注意的是,这里面会有一些过滤逻辑,并不是所有的list都会被接受。
到这里,仅仅是保存list,需要找下list的使用逻辑。
最终发现,当链接一个vpn服务器时,设置代理时会使用:
var ProxyApi = function(){
//...
key:'set',
value:function(){
//...
_this.getRulesForFixedServer(config).then(function(){
chrome.proxy.settings.set({ value: configData, scope: 'regular' }, function(){
//...
});
});
}
}
chrome.proxy.settings.set设置代理最重要的api,修改后似乎没有生效,白名单里面的依旧很慢,暂时放弃。
这里面还有一些拦截请求的操作
chrome.webRequest.onCompleted.addListener(_this.onCompleted, { urls: ["<all_urls>"] }, ["responseHeaders"]);
不是太了解,好像跟代理关系不大,暂时排除这方面的干扰。
网友评论