Getting Started

How to Choose the Right CAPTCHA Solving Method

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)

No comments yet.