【发布时间】:2020-06-15 19:39:17
【问题描述】:
使用此 reCaptcha 演示页面:https://recaptcha-demo.appspot.com/recaptcha-v2-invisible.php
使用 puppeteer,我的目标是等待并确定挑战(必须从网格中选择特定图像)何时在页面上可见。我不是在问如何绕过或解决 reCaptcha,只是想知道它何时处于活动状态并准备好被解决。
通过 DevTools,我发现了代表可见 reCaptcha 挑战的 HTML 元素: recaptcha element tree
不幸的是,我一直无法让 puppeteer “找到”特定元素。即使 reCaptcha 在浏览器中清晰可见并且 #rc-imageselect 元素在元素树中可见,以下代码将始终打印“未找到”。我已经尝试过主框架、子框架等,但无法让 puppeteer 找到 reCaptcha 元素。
let recap = await myframe.$("body #rc-imageselect") //.rc-imageselect-payload") // #rc-imageselect
if (recap == null) {
console.log("imageselect NOT found")
} else {
console.log("imageselect found")
}
为什么这是必要的?在真实世界的页面(不是这个演示页面)上,reCaptcha 挑战不会对某些用户触发,只会对某些用户弹出。我的目标是确定它何时弹出,然后选择如何处理 reCaptcha,方法是解决(单独,手动)、后退或完全放弃。
非常欢迎任何有关 puppeteer 代码以查找 reCaptcha 元素的帮助。谢谢。
【问题讨论】:
-
你是否使用任何特定的参数来启动 Puppeteer?
-
@theDavidBarton in puppeteer.launch 我设置了
defaultViewport,扩展了timeout,并将headless设置为false。我还尝试将devTools设置为true 并将sloMo设置为各种长度。我还尝试了自定义userAgent。这目前正在开发中......最终我想在无头模式下运行它。
标签: node.js puppeteer recaptcha chromium invisible-recaptcha