1.1.2 • Published 1 year ago

puppeteer-extra-plugin-capsolver v1.1.2

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

puppeteer-extra-plugin-capsolver

npm.io npm.io

  • Manage to solve captcha challenges with AI (captcha service based).
  • Puppeteer browser context.
  • ❗ An API key it's required. Get here.

⬇️ Install

npm i puppeteer puppeteer-extra puppeteer-extra-plugin-capsolver

✋ Usage

Import and use within puppeteer-extra.

const puppeteer = require('puppeteer-extra')
const CapSolverPlugin = require('puppeteer-extra-plugin-capsolver')({
    apiKey: 'CAI-XXX ...',
    verboseLevel: 1,
    retry: true         // hcaptchaclicker: by default will retry challenges 
})
puppeteer.use(CapSolverPlugin)

🖱 HCaptcha (DOM feature)

npm.io

  • await page.hcaptchaclicker(checkboxFrame=undefined) - handle a page including hcaptcha checkbox iframe example script (how to use).

  • Will detect for failed callenges (and retry) and for double challenges that sometimes appears.

  • Catch .hcaptchaclicker() exceptions for unsupported challenges.

  • Read more about recognize captcha images through HCaptcha Image Classification.
// get custom hcatpcha checkbox iframe
const desiredCheckboxFrame = await page.$("iframe[src*='custom-link-for-iframe-selector']")

await page.hcaptchaclicker(desiredCheckboxFrame) // pass no frame for detect the first on the page
.then(async (page) => {
    // submit if passed the challenge
    await page.click('#submit-my-form')
    await page.waitForNavigation()
}).catch((e) => {
    // ! catch clicker exception
    console.log(e)
})

📖 Handler / Solving Tasks API Wrapper

  • Based on capsolver-npm (nodejs api wrapper for capsolver.com api).
  • Handler it's attached to any puppeteer page.

  • Use the handler with:

await page.capsolver()

example: retrieve handler and call for funcaptcha token.

await page.capsolver()
    .funcaptchaproxyless(websiteURL, websitePublicKey, funcaptchaApiJSSubdomain) // see required parametes by https://github.com/0qwertyy/capsolver-npm#-supported-captcha-tasks
    .then((results) => {
        if (results.error !== 0) {
            // createTask solution
            const token = results.solution
        } else {
            console.log(`got an error! ${JSON.stringify(results.apiResponse)}`)
        }
    }).catch(e => {
        console.log(e)
    })
  • Note that await page.capsolver().runAynTask() it's also supported in the case of tasks that are not supported by task-bind methods. see: examples/run-any-task-example.js

📁 Working Examples

figure out at examples directory