Socket
Socket
Sign inDemoInstall

capsolver-npm

Package Overview
Dependencies
8
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    capsolver-npm

- **Manage to solve captcha challenges with AI in a NodeJS app (captcha service based).** - ❗ An API key it's **required**. [**Get here.**](https://dashboard.capsolver.com/passport/register?inviteCode=CHhA_5os) - 👀 **Puppeteer integration at** [**pupp


Version published
Weekly downloads
683
decreased by-21.49%
Maintainers
1
Install size
871 kB
Created
Weekly downloads
 

Readme

Source

capsolver.com api wrapper🧠

  • Manage to solve captcha challenges with AI in a NodeJS app (captcha service based).
  • ❗ An API key it's required. Get here.
  • 👀 Puppeteer integration at puppeteer-extra-plugin-capsolver.

🔥 HCaptchaTurboTask (highest pass/valid rate). 🔥 AntiCloudflare.

⬇️ Install

npm i capsolver-npm

✋ Usage

  1. Import module.

     const CapSolver = require('capsolver-npm')
    
  2. Define tasks handler (singleton).

     const handler = new CapSolver(apikey) // captcha task handler
    

❗ 2 version for handle captcha tasks results are the followind:

1️⃣ task-binded methods (handle results in one step)

example: check capsolver.com balance + run for one hcaptcha token (.hcaptchaproxyless()):

const CapSolver = require('capsolver-npm')
const handler = new CapSolver('CAI-XXXX ...', 1) // verbose level 1
let b = await handler.balance()
if (b > 0) {  // usd balance
    await handler.hcaptchaproxyless('https://websiteurl.com/', '000000-000000000-0000000')
        .then(async response => {
            if (response.error === 0) {
                console.log(response.solution)
            } else {
                console.log(`[myapp][task error: ${response.apiResponse.errorCode}]`)
            }
        })
}

2️⃣ build taskData schema for a task type and run any task.

Check task parameters at official docs in order to bind manually captcha tasks.

example: run for one hcaptcha token w/ custom proxy (.runAnyTask()):

const CapSolver = require('capsolver-npm')
const handler = new CapSolver('CAI-XXXX ...')

await handler.runAnyTask({
    type: 'HCaptchaTask',
    websiteURL: 'https://website.com/',
    websiteKey: '000000-00000-000000-000000000',
    proxyInfo: {
        // string format also supported
        // 'proxy': 'proxy.provider.io:23331:user1:password1',
        'proxyType': 'http',
        'proxyAddress': 'ip_address',
        'proxyPort': 3221,
        'proxyLogin': 'username',       // not required
        'proxyPassword': 'password'     // not required
    },
})
    .then(async response => {
        if (response.error === 0) {
            console.log(response.solution)
        } else {
            console.log(`[myapp][task error: ${response.apiResponse.errorCode}]`)
        }
    })

↩️ Get solutions

All methods returns the following schema:

ParameterTypeDescription
errornumber[-1] Request/Solving error. [0] Success solve.
statusTextstringHTTP status string.
apiResponseobjectResults/solution (capsolver.com API response).
solutionobjectSolution got from success solve.
// ✅ success response
{
    error: 0,
    statusText: '200 OK',
    apiResponse: {
        errorId: 0,
        taskId: '4e6c33f5-bc14-44d0-979e-d5f37b072c59',
        status: 'ready',
        solution: {
            gRecaptchaResponse: '03AIIukzgCys9brSNnrVbwXE9mTesvkxQ-ocK ...'
        }
    }
}
// ❌ Error response (invalid API key example)
{
    error: -1,
    statusText: '400 Bad Request',
    apiResponse: {
        errorId: 1
        errorCode: 'ERROR_INVALID_TASK_DATA',
        errorDescription: 'clientKey error',
    }
}

📖 Supported captcha tasks

MethodReturns
await handler.balance()get balance as float number
await handler.runAnyTask(taskData)not use a specific task method

For custom proxy usage in tasks build this schema:

// version 1
// (proxyLogin & proxyPassword are optionals)
const proxyInfo = {
    'proxyType': 'http',
    'proxyAddress': 'ip_address',
    'proxyPort': 3221,
    'proxyLogin': 'username',
    'proxyPassword': 'password'
}

// version 2
const proxyInfo = {
    proxy: 'proxyType:proxyAddress:proxyPort:proxyLogin:proxyPassword'
}

task-binded methods:

⚙️ Cloudflare

// * check required parameters for a website with API docs.
await handler.anticloudflare(websiteURL, proxyInfo, metadata, html)
await handler.antiturnstile(websiteURL, websiteKey, proxyInfo, metadata)

⚙️ HCaptcha

Parameter queries: base64 images array

await handler.hcaptcha(websiteURL, websiteKey, proxyInfo, userAgent, isInvisible, enterprisePayload)
await handler.hcaptchaproxyless(websiteURL, websiteKey, userAgent, isInvisible, enterprisePayload)
await handler.hcaptchaenterprise(websiteURL, websiteKey, proxyInfo, userAgent, isInvisible, enterprisePayload)
await handler.hcaptchaenterpriseproxyless(websiteURL, websiteKey, userAgent, isInvisible, enterprisePayload)
await handler.hcaptchaturbo(websiteURL, websiteKey, proxyInfo, userAgent, isInvisible, enterprisePayload) // proxy required

await handler.hcaptchaclassification(question, base64)

⚙️ ReCaptcha

await handler.recaptchav2(websiteURL, websiteKey, proxyInfo, userAgent, isInvisible, recaptchaDataSValue, cookies)
await handler.recaptchav2proxyless(websiteURL, websiteKey, userAgent = null, isInvisible = null, recaptchaDataSValue = null, cookies = null)
await handler.recaptchav2enterprise(websiteURL, websiteKey, proxyInfo, userAgent = null, enterprisePayload = null, apiDomain = null, cookies = null)
await handler.recaptchav2enterpriseproxyless(websiteURL, websiteKey, userAgent = null, enterprisePayload = null, apiDomain = null, cookies = null)
await handler.recaptchav3(websiteURL, websiteKey, proxyInfo, pageAction, minScore = null)
await handler.recaptchav3proxyless(websiteURL, websiteKey, pageAction, minScore = null)
await handler.recaptchav3enterprise(websiteURL, websiteKey, proxyInfo, pageAction, minScore = null, enterprisePayload = null, apiDomain = null, userAgent = null, cookies = null)
await handler.recaptchav3enterpriseproxyless(websiteURL, websiteKey, pageAction, minScore = null, enterprisePayload = null, apiDomain = null, userAgent = null, cookies = null)

⚙️ Datadome

await handler.datadome(websiteURL, userAgent, captchaUrl, proxyInfo)

⚙️ FunCaptcha

Parameter image: base64 screenshot image

await handler.funcaptcha(websiteURL, websitePublicKey, proxyInfo, funcaptchaApiJSSubdomain, userAgent, data)
await handler.funcaptchaproxyless(websiteURL, websitePublicKey, funcaptchaApiJSSubdomain, userAgent, data)
await handler.funcaptchaclassification(image, question)

⚙️ Geetest

❗ Supports for Geetest V3 & Geetest V4: Manage through GeetestTask documentation.

await handler.geetest(websiteURL, gt, challenge, proxyInfo, geetestApiServerSubdomain, captchaId)
await handler.geetestproxyless(websiteURL, gt, challenge, geetestApiServerSubdomain, captchaId)

⚙️ MTCaptcha

await handler.mtcaptcha(websiteURL, websiteKey, proxyInfo)
await handler.mtcaptchaproxyless(websiteURL, websiteKey)

⚙️ ImageToText

await handler.image2text(body)

Verbose level

// on CapSolver handler definition
const handler = new CapSolver(apikey, verbose) 

Verbose level undefined or 0: Dont print logs, just handle for solution.

Verbose level 1: Only log task status in console.

Verbose level 2: Log API response in console.

📁 Working examples

Figure out here all supported captcha examples.

Keywords

FAQs

Last updated on 14 Apr 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc