AI agent instructions
AI agent instructions
solve_captchas=True).
Quick Start
Captcha solving is enabled by default. You can set it explicitly when creating a session:Supported CAPTCHA Types
Notte automatically detects and solves:- ✅ reCAPTCHA v2 - Checkbox and image challenges
- ✅ hCaptcha - Checkbox and image challenges
- ✅ Cloudflare Turnstile
- ✅ Press-and-hold challenges
- ✅ Text CAPTCHAs - Simple “read the characters and type them” challenges
How It Works
When captcha solving is enabled:- Detection - Notte monitors the page for captcha elements
- Solving - Captchas are solved automatically in the background
- Continuation - Your automation continues seamlessly
Captcha + Proxies
Combine captcha solving with proxies for better success rates:Best Practices
1. Use Realistic Delays
Add human-like delays before and after captcha-protected actions:realistic_delays.py
2. Monitor for Failures
Check if captcha solving failed:monitor_failures.py
3. Use the Live Viewer for Debugging
Watch captcha solving in action:headless_debug.py
4. Combine with Stealth
Use stealth features for better success rates:Examples
reCAPTCHA
For reCAPTCHA challenges, use thecaptcha_solve action with captcha_type="recaptcha". This example comes from the reCAPTCHA template.
recaptcha_solve_action.py
Waiting for a solve in Python
The Python SDK polls one ongoing solve through short HTTP requests. Repeatedcaptcha_solve calls join that solve or return its completed result. Configure the
total wait separately from ordinary action timeouts:
raise_on_failure behavior. Polling does
not restart the solve or extend the session’s maximum lifetime.
SDK actions blocked before execution wait for the CAPTCHA and then retry. If an
action already executed and triggered a CAPTCHA, the SDK waits without replaying
it. This coordination applies to Python SDK actions; direct Playwright/CDP calls
do not participate. It requires a backend version that supports CAPTCHA polling.
Text CAPTCHAs
Text CAPTCHAs are the old-school challenges that show distorted letters, numbers, or a short phrase and ask the user to type the answer into a field. For these challenges, usecaptcha_type="text". This example comes from the text CAPTCHA template.
text_captcha_solve_action.py
Limitations
What CAPTCHA Solving Can Do:
- ✅ Solve most reCAPTCHA v2 challenges
- ✅ Solve most hCaptcha challenges
- ✅ Solve Cloudflare Turnstile and press-and-hold challenges
- ✅ Solve simple text CAPTCHA challenges
- ✅ Work with residential proxies
- ✅ Work in remote browser sessions
What It Cannot Do:
- ❌ Solve 100% of captchas (some are unsolvable)
- ❌ Reliably solve heavily distorted or ambiguous text challenges
- ❌ Solve custom/proprietary captcha systems
- ❌ Bypass all bot detection (combine with stealth)
Common Issues
Issue: Captchas Not Being Solved
Possible causes:solve_captchaswas set toFalse- Captcha type not supported
- Site has additional bot detection
Issue: Timeout Waiting for Captcha
Increase session timeout for captcha-heavy workflows:timeout_handling.py
Testing CAPTCHA Solving
Test captcha solving on demo sites:Next Steps
Session Configuration
All session configuration options
Stealth Mode
Combine with anti-detection features
Proxies
Use proxies with captcha solving
Live View
Watch captcha solving in real-time