node-capmonster
v1.0.0
Published
Capmonster.cloud module for NodeJS
Maintainers
Readme
node-capmonster
Capmonster.cloud SDK for Node.js & TypeScript
At least 2x cheaper, up to 30x faster than manual recognition services.
Documentation • Report Bug • NPM Package
Installation
# bun (recommended)
bun add node-capmonster
# npm
npm install node-capmonster
# yarn
yarn add node-capmonster
# pnpm
pnpm add node-capmonsterSupported Captcha Types
| Type | Class | Proxy Support |
|------|-------|:---:|
| reCAPTCHA v2 | RecaptchaV2Task | Optional |
| reCAPTCHA v2 Enterprise | RecaptchaV2EnterpriseTask | Optional |
| reCAPTCHA v3 | RecaptchaV3Task | Built-in |
| FunCaptcha (Arkose Labs) | FuncaptchaTask | Optional |
| GeeTest v3 | GeeTestTask | Optional |
| GeeTest v4 | GeeTestV4Task | Optional |
| Cloudflare Turnstile | TurnstileTask | Optional |
| Image to Text | ImageToTextTask | N/A |
| AWS WAF | AmazonTask | Optional |
| Binance | BinanceTask | Optional |
| DataDome | DataDomeTask | Required |
| Imperva (Incapsula) | ImpervaTask | Required |
| TenDI | TenDITask | Optional |
| Complex Image | ComplexImageTask | N/A |
Quick Start
import { RecaptchaV2Task } from "node-capmonster"
const client = new RecaptchaV2Task("<api_key>")
const task = client.task({
websiteURL: "https://example.com",
websiteKey: "<site_key>",
})
const taskId = await client.createWithTask(task)
const result = await client.joinTaskResult(taskId)
console.log(result.gRecaptchaResponse)Examples
import { TurnstileTask } from "node-capmonster"
const client = new TurnstileTask("<api_key>")
client.setGlobalProxy({
proxyType: "http",
proxyAddress: "1.2.3.4",
proxyPort: 8080,
proxyLogin: "user",
proxyPassword: "pass",
})
const ua = await client.getUserAgent()
const task = client.task({
websiteURL: "https://example.com",
websiteKey: "0x4AAA...",
cloudflareTaskType: "cf_clearance",
htmlPageBase64: "<base64_encoded_403_page>",
userAgent: ua,
})
const taskId = await client.createWithTask(task)
const result = await client.joinTaskResult(taskId)
console.log(result.cf_clearance)import { FuncaptchaTask } from "node-capmonster"
const client = new FuncaptchaTask("<api_key>")
const task = client.task({
websiteURL: "https://example.com",
websitePublicKey: "69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC",
data: '{"blob":"value_from_network_request"}',
funcaptchaApiJSSubdomain: "client-api.arkoselabs.com",
})
const taskId = await client.createWithTask(task)
const result = await client.joinTaskResult(taskId)
console.log(result.token)import { ImageToTextTask } from "node-capmonster"
import path from "path"
const client = new ImageToTextTask("<api_key>")
const body = await client.prepareImageFromLocal(path.resolve("./captcha.png"))
const task = client.task({
body,
numeric: 1,
recognizingThreshold: 90,
CapMonsterModule: "amazon",
})
const taskId = await client.createWithTask(task)
const result = await client.joinTaskResult(taskId)
console.log(result.text)import { RecaptchaV2Task, CapmonsterError } from "node-capmonster"
const client = new RecaptchaV2Task("<api_key>")
try {
const task = client.task({
websiteURL: "https://example.com",
websiteKey: "<site_key>",
})
const taskId = await client.createWithTask(task)
const result = await client.joinTaskResult(taskId)
console.log(result.gRecaptchaResponse)
} catch (err) {
if (err instanceof CapmonsterError) {
console.error(`${err.errorCode}: ${err.errorDescription}`)
}
}// Report incorrect image captcha
await client.reportIncorrectImageCaptcha(taskId)
// Report incorrect token captcha (reCAPTCHA, Turnstile, GeeTest, etc.)
await client.reportIncorrectTokenCaptcha(taskId)For more examples and detailed API reference, see the documentation.
Support
Note: Support is provided for the code and library only — not for captcha solving usage, integration strategies, or site-specific guidance.
- Bug reports & feature requests: GitHub Issues
- Contact: [email protected]
License
This project is licensed under the MIT License.
