SOP 004: CAPTCHA Solving
Fresh| Field | Value |
|---|---|
| SOP ID | SOP-004 |
| Version | 1.0 |
| Status | Active |
| Source | Steel 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-sdkinstalled
CAPTCHA Handling Flow
Supported CAPTCHA Types
| Type | Status |
|---|---|
| ReCAPTCHA v2/v3 | Supported |
| Cloudflare Turnstile | Supported |
| ImageToText | Supported |
| Amazon AWS WAF | Supported |
| GeeTest v3/v4 | Coming Soon |
| FunCAPTCHA | Not Supported |
| Custom/Enterprise | Not 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
- Use Steel's fingerprinting to avoid CAPTCHAs entirely
- Reuse successful sessions to maintain trust signals
- Implement natural delays between actions
- Vary request patterns - avoid rapid, repetitive actions
- 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
| Issue | Solution |
|---|---|
| CAPTCHA not detected | Ensure solveCaptcha: true is set |
| Solve timeout | Increase session timeout, implement exponential backoff |
| Repeated CAPTCHAs | Use proxy rotation, add natural delays |
| Unsupported type | Implement manual solving or fallback strategy |