Mit einem CLI-Tool für CaptchaAI können Sie CAPTCHAs lösen, Ihr Guthaben überprüfen und API-Parameter direkt vom Terminal aus testen – ohne Anwendungscode schreiben zu müssen. Es ist nützlich für schnelle Tests, Shell-Scripting, CI/CD-Integration und Debugging.
Python-CLI-Tool
Installation
Als captchaai_cli.py speichern und ausführbar machen:
#!/usr/bin/env python3
"""CaptchaAI CLI — command-line CAPTCHA solving and API testing."""
import argparse
import json
import os
import sys
import time
import requests
API_BASE = "https://ocr.captchaai.com"
def get_api_key(args):
"""Get API key from argument or environment variable."""
key = args.key or os.environ.get("CAPTCHAAI_API_KEY")
if not key:
print("Error: API key required. Use --key or set CAPTCHAAI_API_KEY", file=sys.stderr)
sys.exit(1)
return key
def cmd_balance(args):
"""Check account balance."""
key = get_api_key(args)
response = requests.get(
f"{API_BASE}/res.php",
params={"key": key, "action": "getbalance", "json": 1},
timeout=10,
)
result = response.json()
if args.json:
print(json.dumps(result, indent=2))
else:
print(f"${result.get('request', 'unknown')}")
def cmd_solve(args):
"""Submit and poll a CAPTCHA task."""
key = get_api_key(args)
# Build submit parameters
params = {"key": key, "json": 1}
if args.type == "recaptcha-v2":
params.update({"method": "userrecaptcha", "googlekey": args.sitekey, "pageurl": args.pageurl})
elif args.type == "recaptcha-v3":
params.update({
"method": "userrecaptcha", "googlekey": args.sitekey, "pageurl": args.pageurl,
"version": "v3", "action": args.action or "verify",
})
elif args.type == "recaptcha-enterprise":
params.update({
"method": "userrecaptcha", "googlekey": args.sitekey,
"pageurl": args.pageurl, "enterprise": 1,
})
elif args.type == "turnstile":
params.update({"method": "turnstile", "sitekey": args.sitekey, "pageurl": args.pageurl})
elif args.type == "image":
import base64
with open(args.image, "rb") as f:
params.update({"method": "base64", "body": base64.b64encode(f.read()).decode()})
if args.proxy:
params["proxy"] = args.proxy
params["proxytype"] = args.proxy_type or "HTTP"
# Submit
if args.verbose:
safe_params = {k: v for k, v in params.items() if k != "key"}
print(f"Submitting: {json.dumps(safe_params)}", file=sys.stderr)
response = requests.post(f"{API_BASE}/in.php", data=params, timeout=30)
result = response.json()
if result.get("status") != 1:
print(f"Error: {result.get('request', 'unknown')}", file=sys.stderr)
sys.exit(1)
task_id = result["request"]
if args.verbose:
print(f"Task ID: {task_id}", file=sys.stderr)
# Poll
interval = args.interval or 5
timeout = args.timeout or 300
start = time.monotonic()
while time.monotonic() - start < timeout:
time.sleep(interval)
response = requests.get(
f"{API_BASE}/res.php",
params={"key": key, "action": "get", "id": task_id, "json": 1},
timeout=15,
)
result = response.json()
if result.get("request") == "CAPCHA_NOT_READY":
elapsed = time.monotonic() - start
if args.verbose:
print(f"Waiting... ({elapsed:.0f}s)", file=sys.stderr)
continue
if result.get("status") == 1:
elapsed = time.monotonic() - start
if args.json:
print(json.dumps({
"token": result["request"],
"task_id": task_id,
"solve_time": round(elapsed, 1),
}, indent=2))
else:
print(result["request"])
if args.verbose:
print(f"Solved in {elapsed:.1f}s", file=sys.stderr)
sys.exit(0)
print(f"Error: {result.get('request', 'unknown')}", file=sys.stderr)
sys.exit(1)
print(f"Timeout after {timeout}s", file=sys.stderr)
sys.exit(1)
def main():
parser = argparse.ArgumentParser(description="CaptchaAI CLI Tool")
parser.add_argument("--key", help="API key (or set CAPTCHAAI_API_KEY env var)")
parser.add_argument("--json", action="store_true", help="Output as JSON")
parser.add_argument("--verbose", "-v", action="store_true", help="Verbose output")
subparsers = parser.add_subparsers(dest="command", required=True)
# Balance command
subparsers.add_parser("balance", help="Check account balance")
# Solve command
solve_parser = subparsers.add_parser("solve", help="Solve a CAPTCHA")
solve_parser.add_argument(
"type",
choices=["recaptcha-v2", "recaptcha-v3", "recaptcha-enterprise", "turnstile", "image"],
help="CAPTCHA type",
)
solve_parser.add_argument("--sitekey", help="Site key for the CAPTCHA")
solve_parser.add_argument("--pageurl", help="Page URL where the CAPTCHA appears")
solve_parser.add_argument("--image", help="Path to image file (for image type)")
solve_parser.add_argument("--proxy", help="Proxy URL (e.g., http://user:pass@host:port)")
solve_parser.add_argument("--proxy-type", choices=["HTTP", "HTTPS", "SOCKS4", "SOCKS5"], default="HTTP")
solve_parser.add_argument("--action", help="reCAPTCHA v3 action parameter")
solve_parser.add_argument("--interval", type=int, default=5, help="Poll interval in seconds")
solve_parser.add_argument("--timeout", type=int, default=300, help="Max wait time in seconds")
args = parser.parse_args()
if args.command == "balance":
cmd_balance(args)
elif args.command == "solve":
cmd_solve(args)
if __name__ == "__main__":
main()
#!/bin/bash
# Solve a CAPTCHA and use the token in a curl request
TOKEN=$(python captchaai_cli.py solve recaptcha-v2 \
--sitekey "$SITEKEY" \
--pageurl "$TARGET_URL" 2>/dev/null)
if [ $? -eq 0 ]; then
curl -X POST "$TARGET_URL/submit" \
-d "g-recaptcha-response=$TOKEN" \
-d "name=test"
else
echo "CAPTCHA solve failed" >&2
exit 1
fi
Fehlerbehebung
Problem
Ursache
Lösung
Ergebnis passt nicht zum eigenen Fall
Solver-Typ oder Eingabeparameter wurden falsch auf den Zieltyp gemappt
Vergleiche Zielseite, Solver-Methode und Pflichtparameter noch einmal systematisch
Beispiel läuft, aber Produktion scheitert
Session, Header oder Proxy-Kontext weichen vom Test ab
Übertrage erfolgreiche Testbedingungen möglichst unverändert in den Live-Workflow
Fehler bleiben unklar
Logs enthalten zu wenig Kontext für eine belastbare Diagnose
Protokolliere Solver-Typ, Latenz, Fehlercode und Downstream-Reaktion gemeinsam
Verwandte Leitfäden
Bash-Automatisierung mit cURL und CaptchaAI
API-Kurzreferenz
GitHub Actions CI/CD CAPTCHA-Testen
Wie war Ihre Erfahrung mit diesem Artikel?
Kommentare sind für diesen Artikel deaktiviert.
Verwandte Beiträge
Tutorials
So testen Sie Captcha AI vor dem Umstieg parallel: Erfolgsquote, Lösungszeit und Kosten neben Ihrem bisherigen Anbieter mit echtem Traffic vergleichen.
form-encoded oder JSON für die Captcha AI-API: Unterschiede, Code-Beispiele in Python und Node.js und klare Em...
Apr 17, 2026
DevOps & Skalierung
Captcha AI serverlos auf Azure Functions betreiben – Python-Handler, API-Schlüssel im Key Vault und Batch-Verarbeitung von CAPTCHAs über Queue Storage.
Captcha AI serverlos auf Azure Functions betreiben – Python-Handler, API-Schlüssel im Key Vault und Batch-Vera...
May 02, 2026
Hintergründe
Wann DNS-Auflösung die CAPTCHA-API-Latenz wirklich bremst – und wie Sie sie mit Keep-Alive, DNS-Caching und Vorab-Auflösung in Python und Node.js beseitigen.