您可以拦截来自 puppeteer 的 CDP 命令而不在页面上实际执行它们吗?

问题描述 投票:0回答:1

我希望能够利用 puppeteer 来抽象点击、滚动、屏幕截图等,但将 Puppeteer 生成的原始 CDP 命令传递给另一个服务。与 DevTools Protocol Monitor 类似,但来自 Nodejs 应用程序内部。

node.js web-scraping google-chrome-devtools puppeteer
1个回答
0
投票

事情是这样的:Puppeteer 通过向 Chrome 或 Chromium 浏览器发送 CDP 命令来发挥其魔力。但是在这些命令到达浏览器之前拦截它们,这有点棘手。 Puppeteer 没有内置方法来拦截和记录这些命令而不执行它们。

但是,您也并非完全不走运。您可以尝试解决方法:

自定义 Puppeteer:您可能需要修改 Puppeteer 的内部结构来拦截这些命令。这意味着深入研究 Puppeteer 的源代码并对其进行调整以记录它发送的命令。不过,这有点深入。

代理服务器:另一种方法是在 Puppeteer 和浏览器之间设置代理服务器。该服务器可以捕获 CDP 命令,记录它们,然后选择是否将它们传递到浏览器。

这两种方法都需要一些额外的设置,并且需要很好地掌握 Puppeteer 和 DevTools 协议的工作原理。

如果您只是想查看正在发送哪些命令,以进行学习或调试,您可能需要使用

--verbose
标志运行 Puppeteer 或查看
puppeteer-core
库,它可以让您更好地控制浏览器连接。

希望这能给您一个起点!

© www.soinside.com 2019 - 2024. All rights reserved.