【问题标题】:Can't force puppeteer to click on recaptcha in iframe不能强制 puppeteer 在 iframe 中点击 recaptcha
【发布时间】:2020-10-20 14:22:43
【问题描述】:

我正在编写一个机器人,我可以使用它在多个页面上创建帐户。
我必须开发我的 anticaptcha 算法(基于音频 - 已经完成)。
我尝试使用 python + selenium 来做,但在单击 recaptcha 按钮后,我收到以下消息
We're sorry, but your computer or network may be sending automated queries...
现在我正在尝试用 puppeteer 来做这件事。这是代码示例:

const puppeteer = require('puppeteer-extra')
const StealthPlugin = require('puppeteer-extra-plugin-stealth')
puppeteer.use(StealthPlugin())

let browser = puppeteer.launch({ headless: false }).then(async browser => {
    const page = await browser.newPage()
    await page.goto('https://nubela.co/proxycurl/')

    const frameHandle = await page.$("iframe");
    const frame = await frameHandle.contentFrame();
    await frame.click('.recaptcha-checkbox-border')
    await page.screenshot({ path: 'res.png', fullPage: true })
    await browser.close()
})

我收到“TypeError: Cannot read property 'click' of null”。
我试图迭代帧,但它也不起作用......

【问题讨论】:

  • 你不想点击那个 iframe,你需要解决的一切都在主框架中。

标签: python node.js selenium web-scraping puppeteer


【解决方案1】:

所以这里有一些有趣的事实:

  1. recaptcha 故意是您不应该能够自动化的事情。这东西的存在仅用于 1 和 1 目的 - 防止任何形式的自动化

  2. 您仍然可以通过在浏览器中执行自定义 JS 来触摸 iframe 中的组件。 以下是告诉 puppeteer 在浏览器中运行自定义 JS 的方法:https://dev.to/benjaminmock/executing-javascript-in-the-page-context-of-puppeteer-fp8

下面是如何从 JS 操作内框内的对象:https://www.w3schools.com/howto/howto_js_element_iframe.asp

所以您需要制作一个自定义浏览器 js 脚本,在 iframe 中单击您的按钮并让 puppeteer 执行它

【讨论】:

    【解决方案2】:

    您输入的站点有 Cloudflare-UAM!由于您的脚本没有绕过此保护,因此浏览器会遇到保护,并且带有验证码的操作会出现错误,因为验证页面上没有 Recaptcha。

    【讨论】:

      猜你喜欢
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      • 1970-01-01
      • 2020-07-18
      相关资源
      最近更新 更多