Google chrome extension 获取第'页;客户端操作之前的服务器响应
我正在尝试使用Google chrome extension 获取第'页;客户端操作之前的服务器响应,google-chrome-extension,Google Chrome Extension,我正在尝试使用chrome扩展名从页面检索脚本标记。如果我打开查看页面源代码我可以看到脚本标记,但是如果我使用devtools查看它,它就不在那里了。客户端将删除该脚本。我已经试过了,响应与浏览器操纵的响应相同。如何在删除脚本标记之前访问它?使用API读取所有正在运行的脚本,即使它们的标记已删除 manifest.json: “权限”:[“调试器”、“活动选项卡”] 浏览器\u操作的popup.js或background.js: chrome.tabs.query({active:true,c
chrome扩展名
从页面检索脚本
标记。如果我打开查看页面源代码
我可以看到脚本标记,但是如果我使用devtools查看它,它就不在那里了。客户端将删除该脚本。我已经试过了,响应与浏览器操纵的响应相同。如何在删除脚本标记之前访问它?使用API读取所有正在运行的脚本,即使它们的标记已删除
manifest.json:
“权限”:[“调试器”、“活动选项卡”]
浏览器\u操作的popup.js或background.js:
chrome.tabs.query({active:true,currentWindow:true},async([tab])=>{
const pageScripts=await getTabScripts(tab.id);
日志(页面脚本);
});
函数getTabScripts(tabId){
常量结果=[];
让我们来讨论这个问题;
让定时器;
函数onEvent(src、方法、信息){
if(方法=='Debugger.scriptParsed'&&info.executionContextId===1){
结果推送(getSource(info));
}
清除超时(计时器);
定时器=设置超时(doResolve,100);
}
函数getSource(信息){
const{scriptId,url}=info;
返回新承诺(解决=>
chrome.debugger.sendCommand({tabId},'debugger.getScriptSource',{scriptId},
e=>resolve({code:e.scriptSource,url,info}));
}
函数doResolve(){
chrome.debugger.onEvent.removeListener(onEvent);
detach({tabId});
resolveMain(Promise.all(results));
}
返回新承诺(解决=>{
resolveMain=resolve;
attach({tabId},'1.3',()=>{
chrome.debugger.onEvent.addListener(onEvent);
sendCommand({tabId},'debugger.enable');
});
});
}
不幸的是,它会在选项卡上方临时显示一个面板,显示正在调试的脚本,但是如果仍然报告所有结果,您可以将超时时间
100
减少到类似20
。Chrome extensions无法做到这一点,但即使在脚本被删除后也可以读取脚本,请参见下面的答案。在Firefox中有onbeforescriptexecute事件。谢谢,但是我用你的答案得到的脚本要么是版权
,要么是带有2行或3行任意代码的匿名函数,其中url要么是空的,要么是chrome-error://chromewebdata/
。它们都与我正在调试的实际页面无关。如果没有看到实际站点。最后一件事:尝试删除&&info.executionContextId===1
以查看所有脚本。我获得了页面的脚本,但没有要删除的代码。无论如何,谢谢你的帮助。