#
Turnstile & Cloudflare Challenge
Solve Cloudflare Turnstile captchas and Cloudflare Challenge pages ("Just a moment...").
#
Standard Turnstile
#
Basic usage
import { TurnstileTask } from "node-capmonster"
const client = new TurnstileTask("<api_key>")
const task = client.task({
websiteURL: "https://example.com",
websiteKey: "0x4AAAAAAADnPIDROrmt1Wwj",
})
const taskId = await client.createWithTask(task)
const result = await client.joinTaskResult(taskId)
console.log(result.token)
#
Cloudflare Challenge (token)
For Cloudflare Challenge pages that return a token:
const client = new TurnstileTask("<api_key>")
const ua = await client.getUserAgent()
const task = client.task({
websiteURL: "https://example.com",
websiteKey: "0x4AAAAAAADnPIDROrmt1Wwj",
cloudflareTaskType: "token",
pageAction: "managed",
data: "<cData_value>",
pageData: "<chlPageData_value>",
userAgent: ua,
})
const taskId = await client.createWithTask(task)
const result = await client.joinTaskResult(taskId)
console.log(result.token)
console.log(result.userAgent)
#
Cloudflare Challenge (cf_clearance)
Returns a cf_clearance cookie. Your own proxy is required.
const client = new TurnstileTask("<api_key>")
const ua = await client.getUserAgent()
// Get the 403 page HTML and encode it
const response = await fetch("https://example.com")
const html = await response.text()
const htmlBase64 = Buffer.from(html).toString("base64")
const task = client.task({
websiteURL: "https://example.com",
websiteKey: "anything",
cloudflareTaskType: "cf_clearance",
htmlPageBase64: htmlBase64,
userAgent: ua,
proxy: {
proxyType: "http",
proxyAddress: "1.2.3.4",
proxyPort: 8080,
proxyLogin: "user", // optional
proxyPassword: "pass", // optional
},
})
const taskId = await client.createWithTask(task)
const result = await client.joinTaskResult(taskId)
console.log(result.cf_clearance)