Chrome DevTools扩展是否可以替代preprocessorScript?

我想为Javascript创建一个自定义探查器,作为Chrome DevTools扩展。为此,我必须检测网站的所有Javascript代码(解析AST,注入钩子,生成新源代码)。使用此处描述chrome.devtools.inspectedWindow.reload()的参数应该很容易做到这preprocessorScript一点:https : //developer.chrome.com/extensions/devtools_inspectedWindow

不幸的是,此功能已被删除(https://bugs.chromium.org/p/chromium/issues/detail?id=438626),因为没有人在使用它。

您是否知道我可以通过Chrome扩展程序实现同一目的的任何其他方式?还有其他方法可以用更改的版本替换传入的Javascript源吗?这个问题是Chrome扩充功能(可能是其他浏览器的扩充功能)特有的问题,我想在改用其他方法(例如专用应用程式)之前将其作为最后的手段。

使用Chrome调试协议。

首先,使用DOMDebugger.setInstrumentationBreakpointwitheventName: "scriptFirstStatement"作为参数向每个脚本的第一条语句添加一个断点。

其次,在Debugger域中,有一个名为的事件scriptParsed聆听它,如果被调用,用于Debugger.setScriptSource更改信号源。

最后,使用Debugger.resume修改源文件后每次都调用setScriptSource

半伪代码示例:

// Prevent code being executed
cdp.sendCommand("DOMDebugger.setInstrumentationBreakpoint", {
  eventName: "scriptFirstStatement"
});

// Enable Debugger domain to receive its events
cdp.sendCommand("Debugger.enable");

cdp.addListener("message", (event, method, params) => {
  // Script is ready to be edited
  if (method === "Debugger.scriptParsed") {
    cdp.sendCommand("Debugger.setScriptSource", {
      scriptId: params.scriptId,
      scriptSource: `console.log("edited script ${params.url}");`
    }, (err, msg) => {
      // After editing, resume code execution.
      cdg.sendCommand("Debugger.resume");
    });        
  }
});

上面的实现不是理想的。它可能应该监听断点事件,使用关联的事件数据进入脚本,编辑脚本,然后继续。scriptParsed然后恢复调试器是不应该在一起的两件事,它可能会引起问题。不过,这使它成为一个更简单的示例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

可以访问chrome.devtools API调试Chrome扩展程序

来自分类Dev

使用DevTools的Chrome扩展程序

来自分类Dev

是否可以在网页内显示chrome devtools数据?

来自分类Dev

Chrome扩展程序:是否可以找出“ debugger”语句是否存在?

来自分类Dev

如何调试Chrome devtools面板扩展?

来自分类Dev

Google Chrome DevTools扩展-检测页面更改

来自分类Dev

Google Chrome DevTools扩展-检测页面更改

来自分类Dev

chrome devtools 扩展:Windows 上的 CORS 问题

来自分类Dev

网站是否可以跟踪用户的Chrome扩展程序或其行为?

来自分类Dev

是否可以从Javascript(Chrome扩展程序)访问Amazon Product API

来自分类Dev

是否可以通过Chrome扩展程序内容脚本修改Cookie?

来自分类Dev

是否可以获取Chrome扩展程序作者的私人信息

来自分类Dev

是否有chrome扩展程序可以自动修改html?

来自分类Dev

网站是否可以跟踪用户的Chrome扩展程序或其行为?

来自分类Dev

Chrome扩展程序是否可以关闭当前标签页?

来自分类Dev

开发Chrome扩展程序时,Chrome React Devtools不显示

来自分类Dev

Chrome扩展程序:devtools面板可以接收一次性消息吗?

来自分类Dev

替代Chrome扩展程序“ Window Resizer”

来自分类Dev

Chrome用户的ClickToPlugin Safari扩展的替代产品

来自分类Dev

Chrome扩展程序“ Window Resizer”的替代方法

来自分类Dev

当用户在单独的chrome窗口中时,是否可以关闭chrome扩展程序弹出窗口?

来自分类Dev

是否可以通过Chrome扩展内容脚本打开Chrome外部协议请求?

来自分类Dev

Chrome DevTools输出是否为空?

来自分类Dev

在Firefox / Chrome devtools中,是否可以在连接后发送/编辑Websocket消息

来自分类Dev

是否可以创建链接到Chrome DevTools中某个位置的URL?

来自分类Dev

Windows XP的Google Chrome可以替代吗?

来自分类Dev

Chrome扩展程序:是否可以通过扩展程序访问$ 0(选定的控制台元素)?

来自分类Dev

Google Chrome浏览器中是否可以使用Firefox替代debug()函数?

来自分类Dev

Chrome扩展程序确定是否从移动Chrome商店安装

Related 相关文章

  1. 1

    可以访问chrome.devtools API调试Chrome扩展程序

  2. 2

    使用DevTools的Chrome扩展程序

  3. 3

    是否可以在网页内显示chrome devtools数据?

  4. 4

    Chrome扩展程序:是否可以找出“ debugger”语句是否存在?

  5. 5

    如何调试Chrome devtools面板扩展?

  6. 6

    Google Chrome DevTools扩展-检测页面更改

  7. 7

    Google Chrome DevTools扩展-检测页面更改

  8. 8

    chrome devtools 扩展:Windows 上的 CORS 问题

  9. 9

    网站是否可以跟踪用户的Chrome扩展程序或其行为?

  10. 10

    是否可以从Javascript(Chrome扩展程序)访问Amazon Product API

  11. 11

    是否可以通过Chrome扩展程序内容脚本修改Cookie?

  12. 12

    是否可以获取Chrome扩展程序作者的私人信息

  13. 13

    是否有chrome扩展程序可以自动修改html?

  14. 14

    网站是否可以跟踪用户的Chrome扩展程序或其行为?

  15. 15

    Chrome扩展程序是否可以关闭当前标签页?

  16. 16

    开发Chrome扩展程序时,Chrome React Devtools不显示

  17. 17

    Chrome扩展程序:devtools面板可以接收一次性消息吗?

  18. 18

    替代Chrome扩展程序“ Window Resizer”

  19. 19

    Chrome用户的ClickToPlugin Safari扩展的替代产品

  20. 20

    Chrome扩展程序“ Window Resizer”的替代方法

  21. 21

    当用户在单独的chrome窗口中时,是否可以关闭chrome扩展程序弹出窗口?

  22. 22

    是否可以通过Chrome扩展内容脚本打开Chrome外部协议请求?

  23. 23

    Chrome DevTools输出是否为空?

  24. 24

    在Firefox / Chrome devtools中,是否可以在连接后发送/编辑Websocket消息

  25. 25

    是否可以创建链接到Chrome DevTools中某个位置的URL?

  26. 26

    Windows XP的Google Chrome可以替代吗?

  27. 27

    Chrome扩展程序:是否可以通过扩展程序访问$ 0(选定的控制台元素)?

  28. 28

    Google Chrome浏览器中是否可以使用Firefox替代debug()函数?

  29. 29

    Chrome扩展程序确定是否从移动Chrome商店安装

热门标签

归档