AWS CAPTCHA Token Solving
Solve Amazon Web Services CAPTCHA challenges programmatically. AWS CAPTCHA is used to protect various AWS services including account registration, console access, and API endpoints.
AWS CAPTCHA is Amazon's custom captcha system used to protect their web services from automated abuse. It appears on AWS account registration, console login, and other AWS service pages. Our service can bypass these challenges and provide valid verification tokens for seamless automation.
Captcha Type
Use the following captcha type identifier in your API requests:
"type": "AWS_CAPTCHA_TOKEN"
Request Format
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
auth.token |
string | required | Your API key |
captcha.type |
string | required | Must be "AWS_CAPTCHA_TOKEN" |
captcha.metadata.siteUrl |
string | required | Full URL of AWS page with captcha |
captcha.metadata.siteKey |
string | required | AWS CAPTCHA site key |
captcha.payload.context |
string | optional | Context of the captcha (e.g., 'registration', 'login') |
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: 'AWS_CAPTCHA_TOKEN',
metadata: {
siteUrl: 'https://aws.amazon.com/register',
siteKey: 'aws_captcha_site_key'
},
payload: {
context: 'registration',
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
Create Task Response (Processing)
{
"success": true,
"service": "MyDisct Solver",
"message": "Captcha is being processed",
"task": {
"id": "MyDisctSolver_aws123",
"status": "processing"
}
}
Fetch Result Response (Processing)
{
"success": true,
"service": "MyDisct Solver",
"message": "Captcha is being processed",
"task": {
"id": "MyDisctSolver_aws123",
"status": "processing"
}
}
Fetch Result Response (Completed)
{
"success": true,
"service": "MyDisct Solver",
"message": "Captcha solved successfully",
"task": {
"id": "MyDisctSolver_aws123",
"status": "completed",
"result": {
"token": "aws_captcha_token_value",
"timestamp": "2025-11-05T12:34:56.789Z"
}
}
}
The token field contains the AWS CAPTCHA verification token. This token should be
submitted with your AWS form or API request as the captcha response.
Implementation Guide
Step 1: Extract AWS CAPTCHA Site Key
Find the AWS CAPTCHA site key from the page source:
// Method 1: Look for AWS CAPTCHA widget
function getAWSCaptchaSiteKey() {
const awsCaptcha = document.querySelector('[data-aws-captcha]') ||
document.querySelector('.aws-captcha-widget');
if (awsCaptcha) {
return awsCaptcha.getAttribute('data-site-key') ||
awsCaptcha.getAttribute('data-key');
}
const scripts = document.querySelectorAll('script');
for (const script of scripts) {
const match = script.textContent?.match(/aws.*captcha.*key['"]?s*[:=]s*['"]([^'"]+)/i);
if (match) return match[1];
}
const hiddenInput = document.querySelector('input[name*="captcha"][type="hidden"]');
if (hiddenInput) {
return hiddenInput.value;
}
return null;
}
const siteKey = getAWSCaptchaSiteKey();
console.log('AWS CAPTCHA Site Key:', siteKey);
Step 2: Solve AWS CAPTCHA Token
async function solveAWSCaptchaToken(siteUrl, siteKey, context = 'registration') {
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: 'AWS_CAPTCHA_TOKEN',
metadata: { siteUrl, siteKey },
payload: { context }
}
})
});
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)); // Wait 5 seconds
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('AWS CAPTCHA solving failed');
}
}
}
const token = await solveAWSCaptchaToken(
'https://aws.amazon.com/register',
'aws_captcha_site_key',
'registration'
);
console.log('AWS CAPTCHA Token:', token);
Step 3: Submit Token with AWS Form
// Method 1: Submit with AWS registration form
async function submitAWSRegistration(token) {
const formData = new FormData();
formData.append('email', '[email protected]');
formData.append('password', 'securepassword123');
formData.append('captcha_token', token);
const response = await fetch('https://aws.amazon.com/register', {
method: 'POST',
body: formData
});
return await response.json();
}
async function submitAWSAPI(token) {
const response = await fetch('https://aws-api.amazon.com/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: '[email protected]',
password: 'securepassword123',
captchaToken: token
})
});
return await response.json();
}
function injectTokenIntoAWSForm(token) {
const tokenField = document.querySelector('input[name="captcha_token"]') ||
document.querySelector('input[name*="captcha"]') ||
document.querySelector('#captcha_token');
if (tokenField) {
tokenField.value = token;
const form = tokenField.closest('form');
if (form) {
form.submit();
}
}
}
const token = await solveAWSCaptchaToken(siteUrl, siteKey);
await submitAWSRegistration(token);
Python Example
import requests
import time
def solve_aws_captcha_token(site_url, site_key, api_key, context='registration'):
"""
Solve AWS CAPTCHA token challenge
Args:
site_url: URL where AWS CAPTCHA appears
site_key: AWS CAPTCHA site key
api_key: Your MyDisct Solver API key
context: Context (registration, login, etc.)
Returns:
AWS CAPTCHA verification token
"""
# Step 1: Create task
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': 'AWS_CAPTCHA_TOKEN',
'metadata': {
'siteUrl': site_url,
'siteKey': site_key
},
'payload': {
'context': context
}
}
}
)
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}')
# Step 2: Poll for result
while True:
time.sleep(5) # Wait 5 seconds
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('AWS CAPTCHA solving failed')
print('Waiting for solution...')
# Example usage
token = solve_aws_captcha_token(
site_url='https://aws.amazon.com/register',
site_key='aws_captcha_site_key',
api_key='YOUR_API_KEY',
context='registration'
)
print(f'AWS CAPTCHA Token: {token}')
# Submit with AWS registration
response = requests.post(
'https://aws.amazon.com/register',
data={
'email': '[email protected]',
'password': 'securepassword123',
'captcha_token': token
}
)
print(f'Registration response: {response.status_code}')
Best Practices
- Always use the exact AWS page URL where the captcha appears
- Include context parameter for better success rates (registration, login, etc.)
- AWS CAPTCHA solving typically takes 15-45 seconds
- Poll every 5 seconds for token-based captchas
- Use appropriate user agents that match AWS service expectations
- Handle token expiration (tokens typically valid for 2 minutes)
- Implement proper error handling for failed tasks
Common Issues
Solution: AWS CAPTCHA keys are often embedded in JavaScript or hidden inputs. Check the page source code and network requests for the key.
Solution: Ensure you're using the correct site key and URL. AWS services are strict about captcha validation. Double-check the form field names.
Solution: AWS CAPTCHA challenges are complex and may take longer to solve. Increase polling timeout and be patient during processing.
Solution: Different AWS services may require specific context values. Try different context values like 'registration', 'login', 'console' if having issues.