【问题标题】:How to simulate clicks in a Chrome window via the DevTools Protocol without Puppeteer?如何在没有 Puppeteer 的情况下通过 DevTools 协议模拟 Chrome 窗口中的点击?
【发布时间】:2020-09-13 20:37:54
【问题描述】:

我最近使用 Puppeteer 和 Electron 制作了一个 Chrome 自动点击器,但这会创建一个 40 兆字节的可执行文件,这对于一个简单的自动点击器来说似乎太过分了。

我花了好几个小时试图弄清楚 Puppeteer 究竟做了什么来发送点击,但我得到的最接近的是 this 链接。

但是,它是 JavaScript。我的 Puppeteer 自动点击器控制一个外部的、预安装的 chrome.exe。那么它是否发送 JavaScript 字符串供浏览器评估?

我想在不使用 Node、Puppeteer 或 Electron 的情况下将 my auto-clicker 重新设计为独立的可执行文件,而不是 Chrome 扩展程序。

我可能会使用 C++ 或 Pascal,但我不一定要求提供代码(尽管那会很好),而是更多关于如何与 Puppeteer 正在与之交谈的任何 API 进行通信。

【问题讨论】:

  • 我可能遗漏了一些东西,但是如果您的扩展程序可以访问 DOM 内容,为什么不直接在元素上使用 click 事件呢? developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click 如果您需要特别的 x,y 位置,您可以在这些位置注入一个代理元素,其 ID 可以在您的点击中引用。但最好知道您尝试了什么。跨度>
  • Web API 不可靠。例如,在 Puppeteer 成功的情况下,使用它们在 target.com 填写信用卡信息会失败。所以我必须使用 DevTools 协议。
  • 可能是一些问题,DOM 加载的时间问题,target.com 不允许使用等。我同意 devtools 协议更好,但如果你正在构建一个购买狙击手,我我不再那么有兴趣提供帮助了。
  • 我不是在构建采购狙击手。我以过去构建 Puppeteer 的经验为例,说明 Puppeteer 比 Web API 更可靠。

标签: javascript google-chrome google-chrome-devtools puppeteer devtools


【解决方案1】:

我认为您正在寻找 Chrome Devtools API。

作为独立的可执行文件,而不是 Chrome 扩展程序

我不确定您在这里的确切含义,如果您的意思是不依赖 chrome,那么您只是在创建一个自动点击器并希望 chrome 窗口和 URL 是正确的。但这与 chrome devtools 无关。

据我所知,puppiteer 附带的 chrome.exe 注入了来自 puppiteer 或 selenium 的扩展名(但不要引用我的话)。

https://chromedevtools.github.io/devtools-protocol/

使用 API,我建议使用 inspectedWindow,以使用 eval 执行一些 JS。

chrome.devtools.inspectedWindow.eval(
          "document.getElementById('someEl').click();",
           function(eventRes, isException) {
             // callback ?
           });

从头开始,先创建一个基本的扩展。https://developer.chrome.com/extensions/getstarted

从那里您可以使用启动命令参数将您的扩展添加到独立的 chrome.exe。

Path\To\Google\Chrome\Application\chrome.exe" --load-extension="C:\PAthOfExtension"

应该让你去。

更多选择

或者更确切地说是一些进一步的选择.. 将您当前的自动点击器应用程序(包括节点和 puppiter)打包成一个可以作为独立 exe 运行的electron 应用程序..

直接到 CDP 没有第 3 方: https://github.com/aslushnikov/getting-started-with-cdp/blob/master/README.md

【讨论】:

  • 我正在使用 puppeteer-core 来控制我已经安装的 Chrome。它不提供 Chrome。我熟悉创建 Chrome 扩展程序。我不想进行扩展。我想制作一个与 Chrome 不同的单独程序。我当前的自动点击器已经打包为带有electron-builder 的独立电子应用程序。我想在不使用 Node、Electron 或 Puppeteer 的情况下重新制作它。
  • @GirkovArpa 您希望如何连接到任何 chrome 实例而无需将其配置为注入以使用 CDP ?在这种情况下,只需编写任何自动点击器并为活动进程设置一个侦听器。但是您将无法通过 Devtools 协议进行通信。按照设计,它会非常不安全。
  • 我当前的自动点击器 here 连接到我的 Chrome 并通过 DevTools 协议与其通信。它是如何做到的?我不知道。这就是我在这里的原因。安全性(或缺乏安全性)不是问题。
  • @GirkovArpa 所以 puppiter 将在调试侦听器打开的情况下启动 chrome.exe 实例。--remote-debugging-port=9222 这允许与 DevTools 协议进行通信。
  • @GirkovArpa 我已经用您正在寻找的资源更新了答案:github.com/aslushnikov/getting-started-with-cdp/blob/master/…
猜你喜欢
  • 2020-07-13
  • 2014-05-22
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多