This commit is contained in:
cilame 2021-10-16 18:18:02 +08:00
parent c5cf497e56
commit 494aeba3a0
2 changed files with 59 additions and 17 deletions

View File

@ -10,11 +10,65 @@
chrome.contextMenus.create({ chrome.contextMenus.create({
title: "打开 v_jstools 配置页面", title: "打开 v_jstools 动态调试",
contexts: ['all'], contexts: ['all'],
onclick: function(){ onclick: function(){
chrome.tabs.create({ AttachDebugger();
url: chrome.extension.getURL('options.html')
});
} }
}); });
function sendCommand(method, params, source, chainfun){
chrome.debugger.sendCommand(source, method, params, result => {
if (chrome.runtime.lastError) {
console.error('chrome.runtime.lastError', chrome.runtime.lastError)
} else {
if (chainfun){
chainfun(result)
}
}
});
}
chrome.debugger.onEvent.addListener(function (source, method, params){
switch(method){
case "Fetch.requestPaused":
console.log("xmFetch","Fetch.requestPaused", params.request.url)
var itheaders = params.responseHeaders;
if (itheaders.find(v => v.name == "Location")) {
sendCommand("Fetch.continueRequest", { requestId: params.requestId, url: itheaders.value }, source);
break;
}
if ((params.responseStatusCode || params.responseErrorReason)) {
if (params.responseErrorReason) {
sendCommand("Fetch.failRequest", { requestId: params.requestId, errorReason: params.responseErrorReason }, source);
break;
}
sendCommand("Fetch.getResponseBody", { requestId: params.requestId }, source, function(result){
if (result.body !== undefined){
var rescode = atob(result.body) // 收到的也是 base64 的代码base64 解一下就是原始代码,对这个代码处理一下后续再传入 body
console.log(rescode)
}
sendCommand("Fetch.fulfillRequest", {
requestId: params.requestId, responseCode: params.responseStatusCode, responseHeaders: params.responseHeaders,
body: result.body, // 这里只能传 base64(指定代码)
}, source);
});
break;
}
}
})
var attached = false;
function AttachDebugger() {
if (attached){ return }
attached = true
chrome.tabs.query(
{ active: true, currentWindow: true },
function (tabs) {
var tab = { tabId: tabs[0].id };
chrome.debugger.attach(tab, "1.2", function () {
console.log('attached debugger.')
sendCommand("Fetch.enable", { patterns: [
{urlPattern:"*",resourceType:"Script",requestStage:"Response"} // 监听类型,目前主要监听 Script
] }, tab);
});
}
);
}

View File

@ -19,23 +19,11 @@
"all_frames": true "all_frames": true
} }
], ],
"options_page": "options.html", "options_page": "options.html",
"options_ui": { "options_ui": {
"chrome_style": false, "chrome_style": false,
"open_in_tab": true, "open_in_tab": true,
"page": "options.html" "page": "options.html"
}, },
//
// "commands": {
// "attach-debugger": {
// "suggested_key": {
// "default": "Alt+Shift+D"
// },
// "description": "Attach"
// }
// },
"manifest_version": 2 "manifest_version": 2
} }