Skip to content

SOP 004: CAPTCHA Solving

Fresh
FieldValue
SOP IDSOP-004
Version1.0
StatusActive
SourceSteel CAPTCHA Docs

Overview

Steel uses a two-pronged approach: prevention (stealth fingerprinting) and automatic solving when CAPTCHAs do appear.

Prerequisites

  • Steel account (Developer plan or higher)
  • steel-sdk installed

CAPTCHA Handling Flow

Supported CAPTCHA Types

TypeStatus
ReCAPTCHA v2/v3Supported
Cloudflare TurnstileSupported
ImageToTextSupported
Amazon AWS WAFSupported
GeeTest v3/v4Coming Soon
FunCAPTCHANot Supported
Custom/EnterpriseNot Supported

Procedure

Step 1: Enable Auto-Solving

typescript
const session = await client.sessions.create({
  solveCaptcha: true
});

Step 2: Detect-Only Mode (Optional)

typescript
const session = await client.sessions.create({
  solveCaptcha: true,
  stealthConfig: {
    autoCaptchaSolving: false
  }
});

Step 3: Manual Solving

typescript
// Solve all detected CAPTCHAs
await client.sessions.captchas.solve('sessionId');

// Solve specific task
await client.sessions.captchas.solve('sessionId', { taskId: 'task_123' });

// Solve by URL
await client.sessions.captchas.solve('sessionId', { url: 'https://example.com' });

// Solve by Page ID
await client.sessions.captchas.solve('sessionId', { pageId: 'page_123' });

Step 4: Implement Waiting Strategies

typescript
// Wait for network to settle
await page.waitForNetworkIdle();
// Safety buffer for CAPTCHA solving
await page.waitForTimeout(2000);

Best Practices

  1. Use Steel's fingerprinting to avoid CAPTCHAs entirely
  2. Reuse successful sessions to maintain trust signals
  3. Implement natural delays between actions
  4. Vary request patterns - avoid rapid, repetitive actions
  5. Increase session timeout for CAPTCHA-heavy sites

Verification Checklist

  • [ ] Session created with solveCaptcha: true
  • [ ] CAPTCHA auto-detected on page
  • [ ] CAPTCHA solved within reasonable time
  • [ ] Automation continues after solve
  • [ ] Error handling in place for solve failures

Troubleshooting

IssueSolution
CAPTCHA not detectedEnsure solveCaptcha: true is set
Solve timeoutIncrease session timeout, implement exponential backoff
Repeated CAPTCHAsUse proxy rotation, add natural delays
Unsupported typeImplement manual solving or fallback strategy

See Also

SOP Documentation Hub - Built from Steel.dev Official Docs