Captcha bypass tutorials

Was this helpful?

How to bypass reCAPTCHA v3

Introduction

reCAPTCHA v3 is not a classic image-based CAPTCHA but a scoring system that evaluates user behavior in the browser and returns a numeric value (score) ranging from 0.1 to 0.9. Unlike previous versions, it does not require explicit user interaction but imposes strict requirements on token quality.

In this guide, we will cover:

  • How to identify reCAPTCHA v3 on a page
  • Which parameters are required to submit a task
  • How to properly configure minScore and action
  • How to use the reporting system to improve solution quality
  • Python and PHP code examples

Important: Solving reCAPTCHA v3 is a complex task because it imposes strict requirements on the score value. Success depends on a combination of factors: correct parameters, proxy quality, browser digital fingerprints, and session behavior.


How to Identify reCAPTCHA v3 on a page

Version Indicators
reCAPTCHA v2 Contains an "I'm not a robot" checkbox
reCAPTCHA v2 Invisible No checkbox, but image selection sometimes appears upon form submission
reCAPTCHA v3 No checkbox, reCAPTCHA logo in the corner, image selection never appears upon form submission

Quick check via DevTools

  1. Open Developer Console (F12Network tab)
  2. Perform an action that triggers the CAPTCHA
  3. Look for requests to google.com/recaptcha/api2/ or recaptcha.net/recaptcha/api2/
  4. If there is a request to reload but no request to userverify — this is reCAPTCHA v3

Required parameters for solving

Main fields for RecaptchaV3TaskProxyless

Property Type Required Description
type String Yes RecaptchaV3TaskProxyless
websiteURL String Yes Full URL of the page containing the CAPTCHA
websiteKey String Yes Sitekey from the data-sitekey attribute or k parameter in requests
minScore Float Yes Required score: from 0.1 to 0.9
pageAction String No action value if used on the website
isEnterprise Boolean No true for Enterprise version (enterprise.js)
apiDomain String No Loading domain: google.com (default) or recaptcha.net

How to find websiteKey and action

websiteKey:

  1. Open the page with the CAPTCHA
  2. Find the iframe with src="https://www.google.com/recaptcha/api2/anchor"
  3. The sitekey is located in the k parameter of this URL

action (if used):

  1. In the browser console, search for grecaptcha.execute
  2. The value of the action parameter in the function call should be passed in your request
javascript Copy
// Example call on the page
grecaptcha.execute('6LfB5_IbAAAA...', { action: 'login' });
// ↑ the value 'login' is the action

Step by Step Instructions: submitting a task via API

Step 1: Create a task

Endpoint: https://api.2captcha.com/createTask
Method: POST
Content-Type: application/json

json Copy
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "RecaptchaV3TaskProxyless",
    "websiteURL": "https://example.com/login",
    "websiteKey": "6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu",
    "minScore": 0.9,
    "pageAction": "login",
    "isEnterprise": false
  }
}

Step 2: Receive taskId

The response will contain:

json Copy
{
  "errorId": 0,
  "taskId": "1234567890"
}

Step 3: Poll for results

Endpoint: https://api.2captcha.com/getTaskResult

json Copy
{
  "clientKey": "YOUR_API_KEY",
  "taskId": "1234567890"
}

Successful response:

json Copy
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "gRecaptchaResponse": "03AGdBq269xwqd...5pZ_2DMHqUjg",
    "token": "03AGdBq269xwqd...5pZ_2DMHqUjg"
  }
}

Step 4: Using the token

Add the received token to the form field g-recaptcha-response or pass it to the corresponding parameter in your POST request to the target website.

Token lifespan: 120 seconds from generation. Use it immediately.


Critically important recommendations for score and action

Sensitivity to Score

reCAPTCHA v3 is highly sensitive to the score value. Even a token with a declared minScore: 0.9 may be rejected if the website applies additional verification checks.

What to do:

  1. Send multiple requests with different minScore values:

    Copy
    Try sequentially: 0.3 → 0.7 → 0.9
  2. Experiment with the action parameter:

    • Try adding action if it is not specified
    • Try removing action if it is present
    • Ensure the action value exactly matches what the website expects
  3. Test on a demo page before integration:

    Copy
    https://rucaptcha.com/demo/recaptcha-v3

Important: Our workers solve a large number of CAPTCHAs daily, which may affect the quality of the obtained score. Some websites have extremely high requirements, and bypassing them may be technically impossible.


Reporting system: how to save money and improve Quality

Using the feedback system is a mandatory step for stable operation with reCAPTCHA v3. This allows you to:

  • Improve recognition quality
  • Receive refunds for unsuccessful solutions

When to send reportCorrect

The token was accepted by the target website (form submitted successfully, no CAPTCHA error)

Endpoint: https://api.2captcha.com/reportCorrect

json Copy
{
  "clientKey": "YOUR_API_KEY",
  "taskId": 1234567890
}

When to send reportIncorrect

The token was rejected by the website ("Invalid CAPTCHA" error, blocking)

Endpoint: https://api.2captcha.com/reportIncorrect

json Copy
{
  "clientKey": "YOUR_API_KEY",
  "taskId": 1234567890
}

Code examples

Python (using official library)

python Copy
# pip install 2captcha-python
from twocaptcha import TwoCaptcha

solver = TwoCaptcha('YOUR_API_KEY')

try:
    result = solver.recaptcha(
        sitekey='6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu',
        url='https://example.com/login',
        version='v3',
        action='login',
        score=0.9
    )
    token = result['code']
    print(f'Token: {token}')
    
    # Send report after using the token
    # solver.report_correct(task_id) or solver.report_incorrect(task_id)
    
except Exception as e:
    print(f'Error: {e}')

PHP

php Copy
<?php
require __DIR__ . '/vendor/autoload.php';

$solver = new TwoCaptcha\TwoCaptcha('YOUR_API_KEY');

try {
    $result = $solver->recaptcha([
        'sitekey' => '6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu',
        'url'     => 'https://example.com/login',
        'version' => 'v3',
        'action'  => 'login',
        'score'   => 0.3
    ]);
    
    echo "Token: " . $result->code;
    
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}
?>

Common errors and solutions

Error Cause Solution
ERROR_WRONG_USER_KEY Invalid API key Verify the key in your account dashboard
ERROR_ZERO_BALANCE Insufficient funds Top up your account balance
ERROR_CAPTCHA_UNSOLVABLE CAPTCHA was not solved Try a different minScore, verify action, change proxy
Token not accepted by website Mismatched action or userAgent Ensure parameters exactly match the real browser

Request frequency recommendations

  • Polling getTaskResult: every 5-10 seconds (no more frequently!)
  • Between creating new tasks: pause for 2-5 seconds
  • After receiving 3+ consecutive errors: change proxy or pause for 15-30 minutes


Conclusion

Bypassing reCAPTCHA v3 is not a one-time setup but an iterative optimization process. The key to success:

  1. Accurate identification of all parameters (sitekey, action, minScore)
  2. Experimentation with different score and action values
  3. Mandatory use of the reporting system
  4. Monitoring solution quality and rapid adaptation to website changes

We hope these recommendations help you improve your results. If you encounter difficulties — test your solution on the demo page, check your request logs, and do not hesitate to contact support with examples of your requests and responses.