122 lines
3.3 KiB
Markdown
122 lines
3.3 KiB
Markdown
# CAPTCHA Solver Skill
|
|
|
|
## Overview
|
|
Solve CAPTCHAs using multiple approaches:
|
|
1. **Capsolver API** - Fast, reliable, paid ($0.001-0.003/solve)
|
|
2. **Gemini Vision** - Free, for image CAPTCHAs
|
|
3. **2Captcha** - Backup, $1/1000 solves
|
|
|
|
## Setup
|
|
|
|
### Option 1: Capsolver (Recommended)
|
|
```bash
|
|
# Sign up at https://dashboard.capsolver.com
|
|
export CAPSOLVER_API_KEY="your_key_here"
|
|
```
|
|
|
|
### Option 2: 2Captcha
|
|
```bash
|
|
npm install @2captcha/captcha-solver
|
|
export TWOCAPTCHA_API_KEY="your_key_here"
|
|
```
|
|
|
|
## Usage
|
|
|
|
### For reCAPTCHA v2 (checkbox/invisible)
|
|
```bash
|
|
# Using Capsolver
|
|
curl -X POST https://api.capsolver.com/createTask \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"clientKey": "'$CAPSOLVER_API_KEY'",
|
|
"task": {
|
|
"type": "ReCaptchaV2TaskProxyLess",
|
|
"websiteURL": "https://example.com",
|
|
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
|
|
}
|
|
}'
|
|
```
|
|
|
|
### For Image CAPTCHA (using Gemini)
|
|
```bash
|
|
# Screenshot the CAPTCHA
|
|
agent-browser screenshot /tmp/captcha.png
|
|
|
|
# Use Gemini to solve
|
|
gemini "Look at this CAPTCHA image and tell me exactly what text/numbers are shown. Be precise." --image /tmp/captcha.png
|
|
```
|
|
|
|
### For hCaptcha
|
|
```bash
|
|
curl -X POST https://api.capsolver.com/createTask \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"clientKey": "'$CAPSOLVER_API_KEY'",
|
|
"task": {
|
|
"type": "HCaptchaTaskProxyLess",
|
|
"websiteURL": "https://example.com",
|
|
"websiteKey": "your_hcaptcha_site_key"
|
|
}
|
|
}'
|
|
```
|
|
|
|
## Workflow for Browser Automation
|
|
|
|
1. **Detect CAPTCHA** - Screenshot page, check for CAPTCHA elements
|
|
2. **Extract Parameters** - Get sitekey from page source
|
|
3. **Solve via API** - Send to Capsolver/2Captcha
|
|
4. **Inject Token** - Use JavaScript to set the response token
|
|
5. **Submit Form** - Continue automation
|
|
|
|
### Example: Solving reCAPTCHA in agent-browser
|
|
```bash
|
|
# 1. Get the sitekey from the page
|
|
SITEKEY=$(agent-browser eval 'document.querySelector("[data-sitekey]")?.getAttribute("data-sitekey") || document.querySelector(".g-recaptcha")?.getAttribute("data-sitekey")' 2>&1)
|
|
|
|
# 2. Get current URL
|
|
URL=$(agent-browser get url 2>&1)
|
|
|
|
# 3. Solve via Capsolver
|
|
TASK_RESPONSE=$(curl -s -X POST https://api.capsolver.com/createTask \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"clientKey": "'$CAPSOLVER_API_KEY'",
|
|
"task": {
|
|
"type": "ReCaptchaV2TaskProxyLess",
|
|
"websiteURL": "'$URL'",
|
|
"websiteKey": "'$SITEKEY'"
|
|
}
|
|
}')
|
|
|
|
TASK_ID=$(echo $TASK_RESPONSE | jq -r '.taskId')
|
|
|
|
# 4. Poll for result (typically 10-30 seconds)
|
|
sleep 15
|
|
RESULT=$(curl -s -X POST https://api.capsolver.com/getTaskResult \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"clientKey": "'$CAPSOLVER_API_KEY'",
|
|
"taskId": "'$TASK_ID'"
|
|
}')
|
|
|
|
TOKEN=$(echo $RESULT | jq -r '.solution.gRecaptchaResponse')
|
|
|
|
# 5. Inject the token into the page
|
|
agent-browser eval 'document.getElementById("g-recaptcha-response").innerHTML = "'$TOKEN'"'
|
|
|
|
# 6. Submit the form
|
|
agent-browser click "submit-button"
|
|
```
|
|
|
|
## Pricing Reference
|
|
- **Capsolver**: ~$0.80-2.00 per 1000 reCAPTCHA v2
|
|
- **2Captcha**: ~$1.00 per 1000 standard CAPTCHAs
|
|
- **Gemini**: Free (but slower, for images only)
|
|
|
|
## Tips
|
|
1. Use residential proxies to reduce CAPTCHA frequency
|
|
2. Add human-like delays between actions
|
|
3. Randomize mouse movements and typing speed
|
|
4. Use browser profiles with cookies/history
|
|
5. Try OAuth/SSO first - often bypasses CAPTCHA
|