Не могу заставить кукловода щелкнуть по recaptcha в iframe

#python #node.js #selenium #web-scraping #puppeteer

#python #node.js #селен #очистка веб-страниц #кукловод

Вопрос:

Я пишу бота, с помощью которого я могу создавать учетные записи на нескольких страницах.
Я должен разработать свой алгоритм 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: не удается прочитать свойство ‘click’ из null».
Я пытался перебирать кадры, но это тоже не работает…

Комментарии:

1. Вы не хотите нажимать на этот iframe, все, что вам нужно для его решения, находится в основном фрейме.

Ответ №1:

итак, вот несколько забавных фактов:

  1. recaptcha — это намеренно то, что вы не должны уметь автоматизировать. Эта вещь существует только для 1 и 1 цели — предотвратить любую форму автоматизации

  2. Тем не менее, вы можете коснуться компонентов внутри iframe, выполнив пользовательский JS в вашем браузере. Вот как вы можете указать 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.