reCAPTCHA v3 Token Solving
Solve Google reCAPTCHA v3 invisible captchas. reCAPTCHA v3 returns a score (0.0-1.0) indicating bot likelihood. No user interaction required - completely invisible verification.
Google reCAPTCHA v3 is the latest version that works completely in the background. Unlike v2, it doesn't require any user interaction and returns a score from 0.0 to 1.0 indicating the likelihood that the user is a bot. Higher scores indicate more trustworthy users. Our service generates valid tokens with high scores.
Captcha Type
"type": "RECAPTCHA_V3_TOKEN"
Request Format
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
captcha.type |
string | required | Must be "RECAPTCHA_V3_TOKEN" |
captcha.metadata.siteUrl |
string | required | URL where captcha appears |
captcha.metadata.siteKey |
string | required | reCAPTCHA v3 site key |
captcha.payload.recaptchaAction |
string | optional | Action parameter from the site (e.g., "login", "submit", "homepage"). Default: "verify" |
captcha.payload.userAgent |
string | optional | Your browser's user agent to improve solving accuracy |
captcha.payload.cookies |
array | optional | Array of cookie objects (see Cookie Object Structure below) |
captcha.payload.cookies[].name |
string | required* | Cookie name |
captcha.payload.cookies[].value |
string | required* | Cookie value |
captcha.payload.cookies[].domain |
string | required* | Cookie domain (e.g., ".example.com") |
captcha.payload.cookies[].path |
string | optional | Cookie path (defaults to "/") |
captcha.payload.domain |
string | optional | reCAPTCHA API endpoint domain if the site uses an alternative |
captcha.payload.proxy |
object | optional | Proxy configuration object |
captcha.payload.proxy.protocol |
string | required* | Proxy protocol: "http", "https", "socks4", "socks5" |
captcha.payload.proxy.host |
string | required* | Proxy IP address |
captcha.payload.proxy.port |
number | required* | Proxy port number |
captcha.payload.proxy.username |
string | optional | Proxy authentication username |
captcha.payload.proxy.password |
string | optional | Proxy authentication password |
* Required only if proxy object is provided
Example Request
const response = await fetch('https://solver-api.mydisct.com/createTask', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'apikey': 'YOUR_API_KEY'
},
body: JSON.stringify({
auth: { token: 'YOUR_API_KEY' },
context: { source: 'api', version: '1.0.0' },
captcha: {
type: 'RECAPTCHA_V3_TOKEN',
metadata: {
siteUrl: 'https://example.com',
siteKey: '6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696'
},
payload: {
recaptchaAction: 'login', // Action from the site (optional, default: "verify")
userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...', // Your browser UA
cookies: [
{ name: 'session_id', value: 'abc123', domain: '.example.com' },
{ name: 'auth_token', value: 'xyz789', domain: '.example.com' }
],
domain: 'google.com', // Alternative API domain if used by site
proxy: {
protocol: 'http',
host: '1.2.3.4',
port: 8080,
username: 'proxyuser',
password: 'proxypass'
}
}
}
})
});
const data = await response.json();
console.log('Task ID:', data.task.id);
Response Format
{
"success": true,
"service": "MyDisct Solver",
"message": "Captcha is being processed",
"task": {
"id": "MyDisctSolver_abc123",
"status": "processing"
}
}
Fetch Result Response (Processing)
{
"success": true,
"service": "MyDisct Solver",
"message": "Captcha is being processed",
"task": {
"id": "MyDisctSolver_abc123",
"status": "processing"
}
}
Fetch Result Response (Completed)
{
"success": true,
"service": "MyDisct Solver",
"message": "Captcha solved successfully",
"task": {
"id": "MyDisctSolver_abc123",
"status": "completed",
"result": {
"token": "03AGdBq26QF...",
"timestamp": "2025-11-05T12:34:56.789Z"
}
}
}
Implementation Guide
Step 1: Extract reCAPTCHA v3 Site Key and Action
reCAPTCHA v3 requires both the site key and the action parameter. Here's how to find them:
// Method 1: Find site key from script tag
function getRecaptchaV3SiteKey() {
const scripts = document.querySelectorAll('script');
for (const script of scripts) {
const match = script.src?.match(/recaptcha\/api\.js\?render=([^&]+)/);
if (match) return match[1];
}
return null;
}
const siteKey = getRecaptchaV3SiteKey();
console.log('Site Key:', siteKey);
The action parameter is defined by the website and is used to identify different user actions.
Search the page source code for grecaptcha.execute - the action is the second parameter.
Common values include: login, submit, register, homepage, contact.
If you can't find it, try using verify as a default.
Step 2: Solve reCAPTCHA v3 Token
async function solveRecaptchaV3Token(siteUrl, siteKey, action = 'verify') {
const createResponse = await fetch('https://solver-api.mydisct.com/createTask', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'apikey': 'YOUR_API_KEY'
},
body: JSON.stringify({
auth: { token: 'YOUR_API_KEY' },
context: { source: 'api', version: '1.0.0' },
captcha: {
type: 'RECAPTCHA_V3_TOKEN',
metadata: { siteUrl, siteKey },
payload: {
recaptchaAction: action // Important: use the correct action from the site
}
}
})
});
const createData = await createResponse.json();
if (!createData.success) throw new Error(createData.error.message);
const taskId = createData.task.id;
while (true) {
await new Promise(resolve => setTimeout(resolve, 5000));
const resultResponse = await fetch('https://solver-api.mydisct.com/fetchResult', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'apikey': 'YOUR_API_KEY'
},
body: JSON.stringify({ taskId })
});
const resultData = await resultResponse.json();
if (resultData.task.status === 'completed') {
return resultData.task.result.token;
} else if (resultData.task.status === 'failed') {
throw new Error('Token solving failed');
}
}
}
const token = await solveRecaptchaV3Token(
'https://example.com/login',
'6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696',
'login' // Action from the site
);
console.log('reCAPTCHA v3 Token:', token);
Python Example
import requests
import time
def solve_recaptcha_v3(site_url, site_key, api_key, recaptcha_action='verify'):
"""
Solve reCAPTCHA v3 token challenge
Args:
site_url: URL where captcha appears
site_key: reCAPTCHA v3 site key
api_key: Your MyDisct Solver API key
recaptcha_action: Action parameter from the site (default: 'verify')
Returns:
reCAPTCHA v3 response token
"""
create_response = requests.post(
'https://solver-api.mydisct.com/createTask',
headers={'Content-Type': 'application/json', 'apikey': api_key},
json={
'auth': {'token': api_key},
'context': {'source': 'api', 'version': '1.0.0'},
'captcha': {
'type': 'RECAPTCHA_V3_TOKEN',
'metadata': {
'siteUrl': site_url,
'siteKey': site_key
},
'payload': {
'recaptchaAction': action
}
}
}
)
create_data = create_response.json()
if not create_data['success']:
raise Exception(create_data['error']['message'])
task_id = create_data['task']['id']
print(f'Task created: {task_id}')
while True:
time.sleep(5)
result_response = requests.post(
'https://solver-api.mydisct.com/fetchResult',
headers={'Content-Type': 'application/json', 'apikey': api_key},
json={'taskId': task_id}
)
result_data = result_response.json()
if result_data['task']['status'] == 'completed':
return result_data['task']['result']['token']
elif result_data['task']['status'] == 'failed':
raise Exception('Token solving failed')
print('Waiting for solution...')
# Example usage
token = solve_recaptcha_v3(
site_url='https://example.com',
site_key='6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696',
api_key='YOUR_API_KEY',
recaptcha_action='login' # Action from the site
)
print(f'reCAPTCHA v3 Token: {token}')
response = requests.post(
'https://example.com/submit',
data={'g-recaptcha-response': token}
)
print(f'Status: {response.status_code}')
Best Practices
- reCAPTCHA v3 is completely invisible - no user interaction required
- Returns high score (0.7-1.0) for human-like behavior
- Action parameter: Extract the action value from the site's JavaScript code (e.g., "login", "submit", "homepage")
- Tokens expire after 2 minutes - use immediately after receiving
- Use proxy if required by the target website for better success rates
Common Issues
Solution: Ensure you are using a high-quality proxy and a consistent user agent. Google lowers scores for suspicious IP addresses or mismatched user agents.
Solution: Tokens expire quickly (2 minutes). Ensure you are using the token immediately after receiving it. Also verify the site key and action parameter.
Solution: The action parameter must match exactly what the website expects.
Search the page source for grecaptcha.execute to find the correct action value.
Using the wrong action will result in token rejection.