CaptchaAI supports 12+ CAPTCHA types. Each type requires specific API parameters. This guide helps you identify the CAPTCHA on your target page and choose the correct method.
Method Reference Table
| CAPTCHA Type | Method | Key Parameters | Typical Solve Time |
|---|---|---|---|
| reCAPTCHA v2 | userrecaptcha |
googlekey, pageurl |
~12s |
| reCAPTCHA v2 Invisible | userrecaptcha |
googlekey, pageurl, invisible=1 |
~12s |
| reCAPTCHA v2 Enterprise | userrecaptcha |
googlekey, pageurl, enterprise=1 |
~15s |
| reCAPTCHA v3 | userrecaptcha |
googlekey, pageurl, version=v3, action |
~8s |
| reCAPTCHA v3 Enterprise | userrecaptcha |
googlekey, pageurl, version=v3, enterprise=1 |
~10s |
| Cloudflare Turnstile | turnstile |
sitekey, pageurl |
~10s |
| Cloudflare Challenge | cloudflare_challenge |
pageurl, proxy, proxytype |
~15s |
| GeeTest v3 | geetest |
gt, challenge, api_server, pageurl |
~12s |
| Image/OCR | base64 or post |
body (base64 image) |
~5s |
| BLS CAPTCHA | bls |
instructions, image_base64_1..9 |
~10s |
| Grid Image | post with recaptcha=1 |
File upload | ~10s |
How to Identify the CAPTCHA Type
Step 1: Inspect the Page Source
Look for these HTML patterns:
reCAPTCHA v2:
<div class="g-recaptcha" data-sitekey="6Le-wvkS..."></div>
<script src="https://www.google.com/recaptcha/api.js"></script>
reCAPTCHA v2 Invisible:
<div class="g-recaptcha" data-sitekey="6Le-wvkS..." data-size="invisible"></div>
reCAPTCHA v2 Enterprise:
<script src="https://www.google.com/recaptcha/enterprise.js"></script>
reCAPTCHA v3:
<script src="https://www.google.com/recaptcha/api.js?render=6Le-wvkS..."></script>
Cloudflare Turnstile:
<div class="cf-turnstile" data-sitekey="0x4AAAAA..."></div>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js"></script>
GeeTest:
<div id="geetest-captcha"></div>
<!-- Look for gt and challenge values in page scripts -->
Image CAPTCHA:
<img src="/captcha/generate" id="captcha-image">
<input type="text" name="captcha">
Step 2: Check for Enterprise Indicators
Enterprise versions of reCAPTCHA use different script URLs and may include additional parameters:
// Enterprise: uses recaptcha/enterprise.js
grecaptcha.enterprise.render(...)
// Standard: uses recaptcha/api.js
grecaptcha.render(...)
API Call Examples
reCAPTCHA v2
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": "6Le-wvkS...",
"pageurl": "https://example.com"
})
reCAPTCHA v2 Enterprise
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": "6Le-wvkS...",
"pageurl": "https://example.com",
"enterprise": 1
})
reCAPTCHA v3
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": "6Le-wvkS...",
"pageurl": "https://example.com",
"version": "v3",
"action": "login"
})
Cloudflare Turnstile
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY,
"method": "turnstile",
"sitekey": "0x4AAAAA...",
"pageurl": "https://example.com"
})
Cloudflare Challenge
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY,
"method": "cloudflare_challenge",
"pageurl": "https://example.com",
"proxy": "http://user:pass@proxy:port",
"proxytype": "HTTP"
})
GeeTest v3
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY,
"method": "geetest",
"gt": "022c...",
"challenge": "abc...",
"api_server": "api.geetest.com",
"pageurl": "https://example.com"
})
Image/OCR
import base64
with open("captcha.png", "rb") as f:
img_b64 = base64.b64encode(f.read()).decode()
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY,
"method": "base64",
"body": img_b64
})
Decision Flowchart
Is it a text/image CAPTCHA?
├── Yes → method=base64 (upload image)
└── No → Is it reCAPTCHA?
├── Yes → Is it Enterprise?
│ ├── Yes → enterprise=1
│ └── No → Standard method
│ Is it v3?
│ ├── Yes → version=v3, add action
│ └── No (v2) → Is it invisible?
│ ├── Yes → invisible=1
│ └── No → Standard userrecaptcha
└── No → Is it Cloudflare?
├── Turnstile widget → method=turnstile
├── Full challenge page → method=cloudflare_challenge (needs proxy)
└── No → Is it GeeTest?
├── Yes → method=geetest
└── No → Check for hCaptcha, FunCaptcha, or BLS
FAQ
What if I can't identify the CAPTCHA type?
Check the page source for script URLs. Google's domains indicate reCAPTCHA, Cloudflare's indicate Turnstile, and GeeTest has its own domain. For unusual CAPTCHAs, try the image/OCR method.
Can CaptchaAI auto-detect the CAPTCHA type?
You need to specify the method parameter. The identification guide above covers all common types.
What's the difference between method=post and method=base64?
method=post uses multipart file upload, method=base64 sends the image as a base64-encoded string in a parameter. Both solve image CAPTCHAs — use whichever fits your workflow.
Discussions (0)
Join the conversation
Sign in to share your opinion.
Sign InNo comments yet.