美文网首页
SetupVpn源码分析

SetupVpn源码分析

作者: 许彦峰 | 来源:发表于2021-12-07 14:14 被阅读0次

    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"]);
    不是太了解,好像跟代理关系不大,暂时排除这方面的干扰。

    相关文章

      网友评论

          本文标题:SetupVpn源码分析

          本文链接:https://www.haomeiwen.com/subject/dozoxrtx.html