Comparisons

GeeTest vs reCAPTCHA

GeeTest uses interactive puzzles — slide, icon click, word match. reCAPTCHA uses image grids (v2) or invisible scoring (v3). Both are widely deployed, but they differ significantly in how they detect bots and what parameters are needed for solving.


Feature comparison

Feature GeeTest v3 reCAPTCHA v2 reCAPTCHA v3
Challenge type Slide/icon/word puzzles Image grid selection None (invisible)
Behavioral analysis Mouse trajectory, speed curves Mouse/keyboard, cookies Continuous monitoring
Parameters needed gt, challenge, pageurl googlekey, pageurl googlekey, action, pageurl
Response format challenge, validate, seccode Single token Single token + score
Geographic focus China, Asia, growing globally Global Global
Free tier Limited Yes Yes
Dynamic parameters challenge changes per session Static sitekey Static sitekey

Detection approach

GeeTest

  • Analyzes how you interact: slide speed, acceleration curves, micro-corrections
  • Checks for perfectly linear mouse movement (bot indicator)
  • Validates timing — too fast or too consistent = bot
  • Inspects browser environment for automation signals

reCAPTCHA

  • Analyzes behavioral patterns over time (v3 continuous scoring)
  • Uses Google cookies for user reputation
  • Checks IP reputation against Google's database
  • v2 adds visual challenge as secondary verification

Solving complexity

Aspect GeeTest v3 reCAPTCHA v2 reCAPTCHA v3
Parameter extraction Medium (must fetch gt + challenge) Easy (static sitekey) Easy (static sitekey + action)
API method method=geetest method=userrecaptcha method=userrecaptcha + version=v3
Solve time 15–30s 15–30s 5–10s
Response parsing Complex (3 values) Simple (1 token) Simple (1 token)
Challenge reuse No (single-use challenge) N/A (token-based) N/A (token-based)

Solving with CaptchaAI

GeeTest v3

# Must fetch fresh challenge first
params = requests.get("https://example.com/api/captcha").json()

resp = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": API_KEY, "method": "geetest",
    "gt": params["gt"], "challenge": params["challenge"],
    "pageurl": URL, "json": 1
}).json()

# Solution has 3 parts
solution = poll_result(resp["request"])
# solution = {geetest_challenge, geetest_validate, geetest_seccode}

reCAPTCHA v2

resp = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": API_KEY, "method": "userrecaptcha",
    "googlekey": "6Le-wvkSAAAA...", "pageurl": URL, "json": 1
}).json()

# Solution is a single token
token = poll_result(resp["request"])

Key differences for automation

Consideration GeeTest reCAPTCHA
Fresh params per solve Yes (challenge is single-use) No (sitekey is static)
Session management Must maintain session between param fetch and solve Simpler — token is standalone
Token injection Submit 3 form fields Inject 1 hidden field
Fallback behavior Usually no fallback v3 often falls back to v2
Error handling Must handle expired challenges Must handle token expiry

FAQ

Which is more common?

reCAPTCHA is far more common globally. GeeTest dominates in China and is growing in Asia, Latin America, and some European markets.

Which is harder to solve?

Both are solvable with CaptchaAI at similar success rates. GeeTest requires more integration work (parameter extraction, 3-part response) compared to reCAPTCHA's simpler token-based flow.

Can a site use both GeeTest and reCAPTCHA?

Rarely, but some sites use GeeTest for login and reCAPTCHA for other forms. Handle each challenge independently.

Does GeeTest have an invisible mode?

GeeTest v3 always requires user interaction (slide, click, or match). There is no invisible mode like reCAPTCHA v3.


Discussions (0)

No comments yet.