How Steel Handles CAPTCHAs
Steel takes a two-pronged approach to dealing with CAPTCHAs:
Prevention First: Our sophisticated browser fingerprinting and anti-detection systems often prevent CAPTCHAs from appearing in the first place. We maintain realistic browser profiles that make your automated sessions appear more human-like, reducing the likelihood of triggering CAPTCHA challenges.
Automatic Solving: When CAPTCHAs do appear, our automatic solving system kicks in to handle them transparently, allowing your automation to continue without interruption.
Supported CAPTCHA Types
Currently, Steel's auto-solver supports these CAPTCHA services:
✅ Currently Supported:
ReCAPTCHA v2 / v3
Cloudflare Turnstile
ImageToText CAPTCHAs
Amazon AWS WAF
🔜 Coming Soon:
- GeeTest v3/v4
❌ Not Currently Supported:
Custom implementation CAPTCHAs
Enterprise-specific CAPTCHA systems
FunCAPTCHA
Other specialized CAPTCHA types
How CAPTCHA Solving Works
When you enable CAPTCHA solving in your Steel session, here's what happens behind the scenes:
Detection: Our system continuously monitors the page for CAPTCHA elements using multiple detection methods:
DOM structure analysis
Known CAPTCHA iframe patterns
Common CAPTCHA API endpoints
Visual element detection
State Management: CAPTCHA states are tracked per page with real-time updates
Classification: Once detected, the system identifies the specific type of CAPTCHA and routes it to the appropriate solver.
Solving: CAPTCHAs are then solved by us using various methods:
Machine learning models
Third-party solving services
Browser automation techniques
Token manipulation (when applicable)
Verification: The system verifies that the CAPTCHA was successfully solved before allowing the session to continue.
Session Configuration
To enable autosolving, simply set solveCaptcha: true when creating a session.
To detect CAPTCHAs without automatically solving them, disable autoCaptchaSolving in the stealth config:
Manual Solving
If auto-solving is disabled, use the solve endpoint to trigger solving. You can solve all detected CAPTCHAs or target specific ones.
The taskId, url, and pageId required for targeting specific CAPTCHAs can be retrieved from the CAPTCHA status response. When using taskId, use the value from the task's id field.
Best Practices for Implementation
1. Implement Proper Waiting
When navigating to pages that might contain CAPTCHAs, it's important to implement proper waiting strategies:
2. Detecting CAPTCHA Presence
You can detect CAPTCHA presence using these selectors:
// Common CAPTCHA selectors
const captchaSelectors = [
'iframe[src*="recaptcha"]',
'#captcha-box',
'[class*="captcha"]'
];Important Considerations
Plan Availability: CAPTCHA solving is only available on Developer, Startup, and Enterprise plans. It is not included in the free tier.
Success Rates: While our system has high success rates, CAPTCHA solving is not guaranteed to work 100% of the time. Always implement proper error handling.
Timing: CAPTCHA solving can add latency to your automation. Account for this in your timeouts and waiting strategies.
Rate Limits: Even with successful CAPTCHA solving, respect the target site's rate limits and terms of service.
Common Issues and Solutions
Timeout Issues
Increase your session timeout when working with CAPTCHA-heavy sites
Implement exponential backoff for retries
Detection Issues
Use Steel's built-in stealth profiles
Implement natural delays between actions
Rotate IP addresses using Steel's proxy features
Solving Failures
Implement proper error handling
Have fallback strategies ready
Consider implementing manual solving as a last resort
Best Practices for Avoiding CAPTCHAs
Use Steel's Fingerprinting: Our automatic fingerprinting often helps bypass avoidable CAPTCHAs entirely by making your sessions appear more human-like.
Session Management:
Reuse successful sessions when possible
Maintain cookies and session data
Use Steel's session persistence features
Request Patterns:
Implement natural delays between actions
Vary your request patterns
Avoid rapid, repetitive actions
Looking Forward
Steel is continuously improving its CAPTCHA handling capabilities. We regularly update our solving mechanisms to handle new CAPTCHA variants and improve success rates for existing ones.
Stay updated with our documentation for the latest information about supported CAPTCHA types and best practices.
:::callout type: help
Need help building with captcha solving?
Reach out to us on the #help channel on Discord under the ⭐ community section. :::