UNPKG

scrapper-tools

Version:

Its in development but I use it in all my web automation project.

86 lines (73 loc) 2.07 kB
import delay from "delay" import consoleMessage from "./consoleMessage" import waitForFrames from "./waitForFrames" async function getCaptchaFrame(page) { return await waitForFrames( page, "https://www.google.com/recaptcha/api2/anchor" ) } async function getBusterCaptchaFrame(page) { return await waitForFrames( page, "https://www.google.com/recaptcha/api2/bframe" ) } async function solver(page) { consoleMessage.success("Buster", "Clicking on captcha btn") let captchaFrame = await getCaptchaFrame(page) await (await captchaFrame.waitForSelector( "#recaptcha-anchor > div.recaptcha-checkbox-border", { visible: true } )).click() consoleMessage.success("Buster", "Waiting for buster frames") let bCaptchaFrame = await getBusterCaptchaFrame(page) consoleMessage.success("Buster", "Clicking on buster solver icon") while (true) { try { const recaptchaSolveButton = await bCaptchaFrame.waitForSelector( "#solver-button", { visible: true, timeout: 1000 } ) await recaptchaSolveButton.click() } catch (e) { break } } try { const recaptchaReload = await bCaptchaFrame.waitForSelector( "#reset-button", { visible: true, timeout: 500 } ) await recaptchaReload.click() } catch (e) {} } export default async function(page) { while (true) { console.log("ssss") await solver(page) console.log("get captcha frame") // Checks if captcha was really solved try { let captchaFrame = await getCaptchaFrame(page) let captchaClasses = await captchaFrame.evaluate(() => { if (document.querySelector(".recaptcha-checkbox")) { return document.querySelector(".recaptcha-checkbox").className } return false }) if (captchaClasses.includes("recaptcha-checkbox-checked")) { break } } catch (e) {} await delay(1000) } // Check For Reload consoleMessage.success("Buster", "Captcha should be solved") }