GeeTest and BLS are both interactive CAPTCHA systems but differ in challenge type, regional adoption, and solving complexity. Here's a side-by-side comparison.
Overview
| Feature | GeeTest | BLS CAPTCHA |
|---|---|---|
| Challenge type | Slide puzzle, click, icon select | Image grid ordering, selection |
| Primary market | China, Asia-Pacific, gaming | Government services (BLS visa) |
| Interaction | Drag slider, click targets | Select/order images |
| API method | method=geetest |
method=bls |
| CaptchaAI success rate | 100% | 100% |
| Versions | v3, v4 | Single version |
Challenge Differences
GeeTest Challenges
- Slide puzzle: Drag a piece to complete a jigsaw
- Click select: Click objects matching a description
- Icon sequence: Identify and click icons in order
- Difficulty adapts based on behavioral risk score
BLS Challenges
- Image grid ordering: Arrange images in a specific order
- Image selection: Select images matching instructions
- Instructions are often displayed as text within the CAPTCHA image
- Fixed difficulty — no adaptive scaling
Parameter Comparison
GeeTest v3
geetest_params = {
"method": "geetest",
"gt": "abc123...", # 32-char account ID
"challenge": "def456...", # Session-specific, must be fresh
"pageurl": "https://example.com/login",
}
BLS
bls_params = {
"method": "bls",
"sitekey": "site-key-value",
"pageurl": "https://example.com/appointment",
"instructions": "Select images in order", # Optional hint
}
Solving GeeTest with CaptchaAI
import requests
import time
import os
API_KEY = os.environ["CAPTCHAAI_API_KEY"]
def solve_geetest(gt, challenge, pageurl):
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "geetest",
"gt": gt,
"challenge": challenge,
"pageurl": pageurl,
"json": 1,
}, timeout=30)
task_id = resp.json()["request"]
time.sleep(10)
for _ in range(30):
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get",
"id": task_id, "json": 1,
}, timeout=15)
data = resp.json()
if data.get("status") == 1:
return data["request"]
if data["request"] != "CAPCHA_NOT_READY":
raise RuntimeError(data["request"])
time.sleep(5)
raise TimeoutError("Timeout")
Solving BLS with CaptchaAI
def solve_bls(sitekey, pageurl):
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "bls",
"sitekey": sitekey,
"pageurl": pageurl,
"json": 1,
}, timeout=30)
task_id = resp.json()["request"]
time.sleep(10)
for _ in range(30):
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get",
"id": task_id, "json": 1,
}, timeout=15)
data = resp.json()
if data.get("status") == 1:
return data["request"]
if data["request"] != "CAPCHA_NOT_READY":
raise RuntimeError(data["request"])
time.sleep(5)
raise TimeoutError("Timeout")
Practical Differences for Developers
| Aspect | GeeTest | BLS |
|---|---|---|
| Parameter extraction | Moderate — challenge requires API call |
Simpler — sitekey from HTML |
| Challenge freshness | Critical — expires in 60-120s | Less strict |
| Solution format | JSON with challenge, validate, seccode |
Token string |
| Common use case | Login walls, rate limiting | Appointment booking |
| Regional frequency | Very common in Asia | Specific to BLS services |
When You'll Encounter Each
GeeTest
- Scraping Chinese e-commerce platforms
- Gaming account management
- Financial service automation
- Any site using GeeTest SDK
BLS
- BLS visa appointment booking
- Government service automation
- Immigration service portals
- Appointment scheduling systems
FAQ
Which is harder to solve manually?
BLS image ordering can be confusing for humans due to ambiguous instructions. GeeTest slides are more intuitive. Neither matters for API-based solving — CaptchaAI handles both at 100%.
Can I use the same code for both?
The flow is identical (submit → poll → use token), but parameters differ. Use a factory pattern to select the right method.
Which solves faster?
Both are similar — 10-20 seconds average. BLS may be slightly faster if the challenge is simpler.
Related Guides
Solve GeeTest and BLS — start with CaptchaAI.
Discussions (0)
Join the conversation
Sign in to share your opinion.
Sign InNo comments yet.