--- name: captcha-third-party-services description: Unified captcha workflow for 2Captcha, YesCaptcha, and Anti-Captcha. Use when users need official API-based task submission (`createTask`), polling (`getTaskResult`), balance checks (`getBalance`), provider fallback, or debugging captcha token pipelines for reCAPTCHA/hCaptcha/Turnstile/FunCaptcha and similar challenge types. --- # Captcha Third Party Services ## Overview Use official APIs to create captcha tasks, poll completion, and return solve tokens with consistent behavior across providers. Read `references/official-docs-and-analysis.md` when you need provider-specific details, method URLs, and compatibility notes. ## Inputs To Collect - Provider: `2captcha`, `yescaptcha`, or `anti-captcha` - Captcha task type (for example `RecaptchaV2TaskProxyless`, `TurnstileTaskProxyless`, `HCaptchaTaskProxyless`) - Target metadata: `websiteURL`, `websiteKey` and task-specific fields - API key (runtime secret, not hardcoded into committed files) ## API Key Handling Prefer environment variables: - `CAPTCHA_2CAPTCHA_KEY` - `CAPTCHA_YESCAPTCHA_KEY` - `CAPTCHA_ANTI_CAPTCHA_KEY` Only use direct `--api-key` arguments for one-off tests. ## Unified Workflow 1. Check balance before creating tasks. 2. Build a `task` payload that matches provider-supported task schema. 3. Submit `createTask`. 4. Poll `getTaskResult` every 3-5 seconds until `status=ready` or timeout. 5. Return `solution` token and timing/cost metadata. ## Provider Selection Strategy - Start with preferred provider from user. - If provider returns permanent task validation errors, fix payload first. - If provider returns transient capacity/timeouts, fail over to next provider. - Keep task type and site parameters identical during failover to isolate provider variance. Recommended fallback order: 1. `yescaptcha` 2. `2captcha` 3. `anti-captcha` Adjust order using account balance, measured solve latency, and recent success rate. ## Use The Bundled CLI Use `scripts/captcha_api_cli.py` for deterministic API calls. ### Balance ```bash python3 scripts/captcha_api_cli.py balance --provider 2captcha python3 scripts/captcha_api_cli.py balance --provider yescaptcha python3 scripts/captcha_api_cli.py balance --provider anti-captcha ``` ### Create Task ```bash python3 scripts/captcha_api_cli.py create-task \ --provider 2captcha \ --task-json '{"type":"RecaptchaV2TaskProxyless","websiteURL":"https://example.com","websiteKey":"SITE_KEY"}' ``` ### Poll Task Result ```bash python3 scripts/captcha_api_cli.py get-task-result \ --provider 2captcha \ --task-id 123456789 ``` ### End-To-End Solve (Create + Poll) ```bash python3 scripts/captcha_api_cli.py solve \ --provider yescaptcha \ --task-json '{"type":"TurnstileTaskProxyless","websiteURL":"https://example.com","websiteKey":"SITE_KEY"}' \ --poll-interval 3 \ --timeout 180 ``` ## Raw Curl Patterns Use these when a user explicitly asks for direct HTTP examples. ### createTask ```bash curl -sS https://api./createTask \ -H 'Content-Type: application/json' \ -d '{ "clientKey":"", "task":{ "type":"RecaptchaV2TaskProxyless", "websiteURL":"https://example.com", "websiteKey":"SITE_KEY" } }' ``` ### getTaskResult ```bash curl -sS https://api./getTaskResult \ -H 'Content-Type: application/json' \ -d '{ "clientKey":"", "taskId":123456789 }' ``` ### getBalance ```bash curl -sS https://api./getBalance \ -H 'Content-Type: application/json' \ -d '{"clientKey":""}' ``` ## Troubleshooting - `errorId != 0`: treat as API-level failure and inspect `errorCode`/`errorDescription`. - Stuck in `processing`: extend timeout or switch provider. - Invalid key/site params: validate task type and required fields from official docs. - Low balance: call `getBalance` and select another provider if needed. ## Compliance - Use these services only for authorized security testing and legitimate automation. - Respect target website Terms of Service and applicable laws.