Back to Skills
    🦞

    2captcha

    Solve CAPTCHAs using 2Captcha service.

    By @adinvadim
    View on GitHub
    SKILL.md
    ---
    name: 2captcha
    description: Solve CAPTCHAs using 2Captcha service via CLI. Use for bypassing captchas during web automation, account creation, or form submission.
    homepage: https://github.com/adinvadim/2captcha-cli
    ---
    
    # 2Captcha Skill
    
    Solve CAPTCHAs programmatically using the 2Captcha human-powered service.
    
    ## Installation
    
    ```bash
    # One-line install
    curl -fsSL https://raw.githubusercontent.com/adinvadim/2captcha-cli/main/solve-captcha \
      -o /usr/local/bin/solve-captcha && chmod +x /usr/local/bin/solve-captcha
    
    # Verify
    solve-captcha --version
    ```
    
    ## Configuration
    
    ```bash
    # Save your 2Captcha API key
    mkdir -p ~/.config/2captcha
    echo "YOUR_API_KEY" > ~/.config/2captcha/api-key
    
    # Or use environment variable
    export TWOCAPTCHA_API_KEY="your-key"
    ```
    
    Get your API key at https://2captcha.com/enterpage
    
    ## Quick Reference
    
    ### Check Balance First
    ```bash
    ./solve-captcha balance
    ```
    
    ### Image CAPTCHA
    ```bash
    # From file
    ./solve-captcha image /path/to/captcha.png
    
    # From URL  
    ./solve-captcha image "https://site.com/captcha.jpg"
    
    # With options
    ./solve-captcha image captcha.png --numeric 1 --math
    ./solve-captcha image captcha.png --comment "Enter red letters only"
    ```
    
    ### reCAPTCHA v2
    ```bash
    ./solve-captcha recaptcha2 --sitekey "6Le-wvk..." --url "https://example.com"
    ```
    
    ### reCAPTCHA v3
    ```bash
    ./solve-captcha recaptcha3 --sitekey "KEY" --url "URL" --action "submit" --min-score 0.7
    ```
    
    ### hCaptcha
    ```bash
    ./solve-captcha hcaptcha --sitekey "KEY" --url "URL"
    ```
    
    ### Cloudflare Turnstile
    ```bash
    ./solve-captcha turnstile --sitekey "0x4AAA..." --url "URL"
    ```
    
    ### FunCaptcha (Arkose)
    ```bash
    ./solve-captcha funcaptcha --public-key "KEY" --url "URL"
    ```
    
    ### GeeTest
    ```bash
    # v3
    ./solve-captcha geetest --gt "GT" --challenge "CHALLENGE" --url "URL"
    
    # v4
    ./solve-captcha geetest4 --captcha-id "ID" --url "URL"
    ```
    
    ### Text Question
    ```bash
    ./solve-captcha text "What color is the sky?" --lang en
    ```
    
    ## Finding CAPTCHA Parameters
    
    ### reCAPTCHA sitekey
    Look for:
    - `data-sitekey` attribute in HTML
    - `k=` parameter in reCAPTCHA iframe URL
    - Network request to `google.com/recaptcha/api2/anchor`
    
    ### hCaptcha sitekey
    Look for:
    - `data-sitekey` in hCaptcha div
    - Network requests to `hcaptcha.com`
    
    ### Turnstile sitekey
    Look for:
    - `data-sitekey` in Turnstile widget
    - `cf-turnstile` class elements
    
    ## Workflow for Browser Automation
    
    1. **Detect CAPTCHA** - Check if page has captcha element
    2. **Extract params** - Get sitekey/challenge from page source
    3. **Solve via CLI** - Call solve-captcha with params
    4. **Inject token** - Set `g-recaptcha-response` or callback
    
    ### Example: Inject reCAPTCHA Token
    ```javascript
    // After getting token from solve-captcha
    document.getElementById('g-recaptcha-response').value = token;
    // Or call callback if defined
    ___grecaptcha_cfg.clients[0].callback(token);
    ```
    
    ## Cost Awareness
    
    - Check balance before heavy automation
    - Image: ~$0.001 per solve
    - reCAPTCHA/hCaptcha/Turnstile: ~$0.003 per solve
    
    ## Error Handling
    
    Common errors:
    - `ERROR_ZERO_BALANCE` - Top up account
    - `ERROR_NO_SLOT_AVAILABLE` - Retry in few seconds
    - `ERROR_CAPTCHA_UNSOLVABLE` - Bad image or impossible captcha
    - `ERROR_WRONG_CAPTCHA_ID` - Invalid task ID
    
    ## Notes
    
    - Solving takes 10-60 seconds depending on type
    - reCAPTCHA v3 may need multiple attempts for high scores
    - Some sites detect automation - use carefully
    - Tokens expire! Use within 2-5 minutes