diff --git a/background.js b/background.js index 9b46553..6a4a017 100644 --- a/background.js +++ b/background.js @@ -83,23 +83,23 @@ function AttachDebugger() { } ); } -// var currtabid; -// var currdomain; -// chrome.extension.onMessage.addListener(function (req, sender, sendResponse){ -// if (req.getcookie){ -// currtabid = sender.tab.id -// currdomain = req.domain -// sendResponse({}) -// } -// }) -// chrome.cookies.onChanged.addListener(function(info){ -// if (currtabid){ -// chrome.cookies.getAll({domain: currdomain}, function(cookie){ -// var cookies = [] -// for (var i = 0; i < cookie.length; i++) { -// cookies.push(cookie[i]) -// } -// chrome.tabs.sendMessage(currtabid, {action: {type:'getcookie', info: cookies}}, function(){}) -// }); -// } -// }); \ No newline at end of file +var currtabid; +var currdomain; +chrome.extension.onMessage.addListener(function (req, sender, sendResponse){ + if (req.getcookie){ + currtabid = sender.tab.id + currdomain = req.domain + sendResponse({}) + } +}) +chrome.cookies.onChanged.addListener(function(info){ + if (currtabid){ + chrome.cookies.getAll({domain: currdomain}, function(cookie){ + var cookies = [] + for (var i = 0; i < cookie.length; i++) { + cookies.push(cookie[i]) + } + chrome.tabs.sendMessage(currtabid, {action: {type:'getcookie', info: cookies}}, function(){}) + }); + } +}); \ No newline at end of file diff --git a/inject.js b/inject.js index 3c95572..5615953 100644 --- a/inject.js +++ b/inject.js @@ -1335,22 +1335,24 @@ chrome.storage.local.get(hookers, function (result) { } }) -// chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) { -// if (msg.action.type == 'error'){ -// inject_script(`console.error(${JSON.stringify(msg.action.info)})`) -// } -// if (msg.action.type == 'addlistener'){ -// inject_script(`try{v_log_env()}catch(e){debugger;alert('请打开调试总开关,同时将dom挂钩全部选中后,再刷新页面点击代码生成按钮。')}`) -// } -// if (msg.action.type == 'logtoggle'){ -// inject_script(`globalConfig.logtogglefunc({key:'w',altKey:true})`) -// } -// if (msg.action.type == 'alerterror'){ -// inject_script(`alert(${JSON.stringify(msg.action.info)})`) -// } -// if (msg.action.type == 'getcookie'){ -// inject_script('window.vilame_setter='+JSON.stringify(msg.action.info)) -// } -// sendResponse({}) -// }); -// chrome.extension.sendMessage({getcookie:true, domain:document.domain}, function(res){}) \ No newline at end of file +chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) { + if (msg.action.type == 'error'){ + inject_script(`console.error(${JSON.stringify(msg.action.info)})`) + } + if (msg.action.type == 'addlistener'){ + inject_script(`try{v_log_env()}catch(e){debugger;alert('请打开调试总开关,同时将dom挂钩全部选中后,再刷新页面点击代码生成按钮。')}`) + } + if (msg.action.type == 'logtoggle'){ + inject_script(`globalConfig.logtogglefunc({key:'w',altKey:true})`) + } + if (msg.action.type == 'alerterror'){ + inject_script(`alert(${JSON.stringify(msg.action.info)})`) + } + if (msg.action.type == 'getcookie'){ + // 有些 onlyhttp 的 cookie 直接通过 js 拿不到,所以这个插件会主动在 js 环境下注入一个 vilame_setter 参数。 + // 通过 vilame_setter 参数可以直接拿到所有当前页面 domain 下的 cookie 包括 httponly 类型的 cookie。 + inject_script('window.vilame_setter='+JSON.stringify(msg.action.info)) + } + sendResponse({}) +}); +chrome.extension.sendMessage({getcookie:true, domain:document.domain}, function(res){}) \ No newline at end of file diff --git a/tools/model_funcs.js b/tools/model_funcs.js index e3b221d..3e111fd 100644 --- a/tools/model_funcs.js +++ b/tools/model_funcs.js @@ -160,12 +160,17 @@ function handle_proxy(req, res) { get_cookie_local(function(v){ // 可以配合 js 的 server 代码在这里搞自动补充/修改 cookie 的功能。 var message = v.message - var purl = new URL(message.href).origin - req.headers.cookie = message.cookie || req.headers.cookie - req.headers['user-agent'] = message.userAgent || req.headers['user-agent'] - proxy.web(req, res, { target: purl }, function(e){ - console.log(e) - }); + if(message){ + var purl = new URL(message.href).origin + req.headers.cookie = message.cookie || req.headers.cookie + req.headers['user-agent'] = message.userAgent || req.headers['user-agent'] + proxy.web(req, res, { target: purl }, function(e){ + console.log(e) + }); + }else{ + res.write('