Çalışan bir CapMonster Cloud entegrasyonunuz var ve onu baştan yazmak istemiyorsunuz — geçişin büyük kısmı da bunu gerektirmez. Sorgulama döngünüz, yeniden deneme mantığınız ve iş akışınız aynı kalır; değişen şey esasen iki satırdır: temel URL ve API anahtarı parametresi. Bu rehber, reCAPTCHA v2, Cloudflare Turnstile ve görüntü/OCR CAPTCHA türleri için tam eşlemeyi, çalışan kod örnekleriyle birlikte verir.
Neden CaptchaAI'ye geçiş yapılır?
CaptchaAI, 2Captcha uyumlu in.php / res.php uç noktalarını kullanır. CapMonster Cloud'un JSON tabanlı createTask / getTaskResult akışına alışkınsanız kavramlar birebir örtüşür; yalnızca istek biçimi ve alan adları farklıdır.
İki pratik motivasyon öne çıkar:
- Öngörülebilir USD maliyeti. CaptchaAI, çözüm başına değil, eşzamanlı thread başına faturalandırır. TL kur oynaklığıyla uğraşan Türkiye'deki ekipler için aylık sabit USD fiyatı planlama açısından bir avantajdır:
BASIC ($15/ay, 5 thread)ile başlar, hacim büyüdükçeADVANCE ($90/ay, 50 thread)gibi üst kademelere geçilir. Her planda thread başına çözüm sayısı sınırsızdır. - Desteklenen türler. CaptchaAI; reCAPTCHA v2/v3, Cloudflare Turnstile ve Cloudflare doğrulama akışı, GeeTest v3, görüntü/OCR, grid ve BLS CAPTCHA türlerini çözer. hCaptcha ve FunCaptcha (Arkose Labs) desteklenmez — bu türleri taşıyorsanız geçiş öncesinde trafiğinizi gözden geçirin. CaptchaFox, Friendly Captcha ve Lemin ise
(beta)aşamasındadır.
Ne değişiyor?
Geçişte dokunacağınız alanların tamamı şu tabloda:
| Bileşen | CapMonster Cloud | CaptchaAI |
|---|---|---|
| Gönderim URL'si | https://api.capmonster.cloud/createTask |
https://ocr.captchaai.com/in.php |
| Sonuç URL'si | https://api.capmonster.cloud/getTaskResult |
https://ocr.captchaai.com/res.php |
| API anahtarı parametresi | clientKey |
key |
| İstek biçimi | JSON gövdesi | Form kodlu (veya JSON) |
| Görev kimliği alanı | taskId |
request (yanıt içinde) |
| Sonuç alanı | solution nesnesi |
request (token dizesi) |
30 saniyelik geçiş: iki satırı değiştirin
Kodunuz bir sarmalayıcı ya da SDK üzerinden çalışıyorsa en pratik yol, temel URL ile anahtarı değiştirmektir:
# Before (CapMonster Cloud)
API_URL = "https://api.capmonster.cloud"
CLIENT_KEY = "your_capmonster_key"
# After (CaptchaAI)
SUBMIT_URL = "https://ocr.captchaai.com/in.php"
RESULT_URL = "https://ocr.captchaai.com/res.php"
API_KEY = "your_captchaai_key"
reCAPTCHA v2'nin tam geçişi
Aşağıda aynı işi yapan iki tam örnek var: önce mevcut CapMonster Cloud kodu, sonra CaptchaAI karşılığı. Sorgulama döngüsünün yapısı neredeyse birebir aynı; yalnızca alan adları ve yanıt ayrıştırması değişiyor.
CapMonster Cloud (önceki)
import requests
import time
resp = requests.post("https://api.capmonster.cloud/createTask", json={
"clientKey": "CAPMONSTER_KEY",
"task": {
"type": "RecaptchaV2TaskProxyless",
"websiteURL": "https://example.com",
"websiteKey": "6Le-SITEKEY",
}
}).json()
task_id = resp["taskId"]
while True:
time.sleep(5)
result = requests.post("https://api.capmonster.cloud/getTaskResult", json={
"clientKey": "CAPMONSTER_KEY",
"taskId": task_id,
}).json()
if result["status"] == "ready":
token = result["solution"]["gRecaptchaResponse"]
break
CaptchaAI (sonraki)
import requests
import time
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": "6Le-SITEKEY",
"pageurl": "https://example.com",
"json": "1",
}).json()
task_id = resp["request"]
while True:
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": "YOUR_API_KEY",
"action": "get",
"id": task_id,
"json": "1",
}).json()
if result["status"] == 1:
token = result["request"]
break
if result["request"] != "CAPCHA_NOT_READY":
raise Exception(result["request"])
status == 1 olduğunda token yanıttaki request alanından gelir; gRecaptchaResponse gibi iç içe bir nesneyi ayrıştırmanıza gerek kalmaz.
Parametre eşlemesi
Görev tipini ve alan adlarını CaptchaAI karşılıklarıyla değiştirin. En çok kullanılan üç tür:
reCAPTCHA v2
| CapMonster Cloud | CaptchaAI |
|---|---|
task.type: "RecaptchaV2TaskProxyless" |
method: "userrecaptcha" |
task.websiteKey |
googlekey |
task.websiteURL |
pageurl |
task.isInvisible: true |
invisible: "1" |
Cloudflare Turnstile
| CapMonster Cloud | CaptchaAI |
|---|---|
task.type: "TurnstileTaskProxyless" |
method: "turnstile" |
task.websiteKey |
sitekey |
task.websiteURL |
pageurl |
Turnstile'da görev tipi turnstile olur ve websiteKey, sitekey parametresine karşılık gelir; geri kalan akış reCAPTCHA v2 ile aynıdır.
Görüntü CAPTCHA'sı
| CapMonster Cloud | CaptchaAI |
|---|---|
task.type: "ImageToTextTask" |
method: "base64" |
task.body |
body |
Node.js tarafında geçiş
Axios ile çalışıyorsanız değişiklik yine yüzeyseldir: JSON gövdesi yerine sorgu parametreleri gönderir, resp.data.taskId yerine resp.data.request okursunuz.
CapMonster Cloud (önceki)
const axios = require('axios');
const resp = await axios.post('https://api.capmonster.cloud/createTask', {
clientKey: 'CAPMONSTER_KEY',
task: {
type: 'RecaptchaV2TaskProxyless',
websiteURL: 'https://example.com',
websiteKey: '6Le-SITEKEY',
}
});
const taskId = resp.data.taskId;
CaptchaAI (sonraki)
const axios = require('axios');
const resp = await axios.post('https://ocr.captchaai.com/in.php', null, {
params: {
key: 'YOUR_API_KEY',
method: 'userrecaptcha',
googlekey: '6Le-SITEKEY',
pageurl: 'https://example.com',
json: 1,
}
});
const taskId = resp.data.request;
Hata kodu eşlemesi
Hata isimlerinin çoğu birebir aynıdır; yalnızca birkaç ayrıntıya dikkat edin:
| CapMonster Cloud | CaptchaAI karşılığı |
|---|---|
ERROR_KEY_DOES_NOT_EXIST |
ERROR_KEY_DOES_NOT_EXIST |
ERROR_ZERO_BALANCE |
ERROR_ZERO_BALANCE |
ERROR_RECAPTCHA_TIMEOUT |
ERROR_CAPTCHA_UNSOLVABLE |
ERROR_NO_SLOT_AVAILABLE |
ERROR_NO_SLOT_AVAILABLE |
CAPTCHA_NOT_READY |
CAPCHA_NOT_READY |
En sık gözden kaçan nokta yazım farkıdır: CaptchaAI, CAPCHA_NOT_READY (ortada T yok) döndürür. "Hazır değil" durumunu bu değerle kontrol ettiğinizden emin olun.
Bakiye sorgulama
Bakiye çağrısı da ayrı bir uç nokta yerine res.php üzerinden action=getbalance ile yapılır:
CapMonster Cloud
resp = requests.post("https://api.capmonster.cloud/getBalance", json={
"clientKey": "CAPMONSTER_KEY"
}).json()
balance = resp["balance"]
CaptchaAI
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": "YOUR_API_KEY",
"action": "getbalance",
"json": "1",
}).json()
balance = float(resp["request"])
Geçiş kontrol listesi
- [ ] CaptchaAI API anahtarınızı captchaai.com üzerinden alın
- [ ] Gönderim URL'sini değiştirin:
api.capmonster.cloud/createTask→ocr.captchaai.com/in.php - [ ] Sonuç URL'sini değiştirin:
api.capmonster.cloud/getTaskResult→ocr.captchaai.com/res.php - [ ] Kimlik doğrulamayı değiştirin:
clientKey→key - [ ] İstek biçimini değiştirin: JSON görev nesnesi → form kodlu parametreler
- [ ] Yanıt ayrıştırmayı güncelleyin:
taskId→request,solution.gRecaptchaResponse→request - [ ] Hata işlemeyi güncelleyin:
CAPTCHA_NOT_READY→CAPCHA_NOT_READY - [ ] Üretim trafiğini taşımadan önce tek bir çözümle test edin
Sık sorulan sorular
Mevcut kodumun ne kadarını değiştirmem gerekir?
Genelde çok azını. Temel URL, key parametresi, istek biçimi (JSON → form kodlu) ve yanıt ayrıştırması değişir. Sorgulama döngüsü ve yeniden deneme mantığı olduğu gibi kalır. Tipik bir geçiş 15–30 dakika sürer.
CaptchaAI hangi CAPTCHA türlerini destekliyor?
reCAPTCHA v2/v3, Cloudflare Turnstile ve doğrulama akışı, GeeTest v3, görüntü/OCR, grid ve BLS türlerini çözer. hCaptcha ve FunCaptcha desteklenmez; CaptchaFox, Friendly Captcha ve Lemin beta aşamasındadır.
Fiyatlandırma CapMonster Cloud'dan nasıl farklı?
CaptchaAI çözüm başına değil, eşzamanlı thread başına faturalandırır. Planlar BASIC ($15/ay, 5 thread) ile başlar ve her planda thread başına çözüm sınırsızdır — bu, yüksek hacimde maliyeti öngörülebilir kılar. Fiyatlar USD'dir.
Geçiş sırasında iki servisi aynı anda çalıştırabilir miyim?
Evet. Trafiğin bir bölümünü CaptchaAI'ye yönlendirip CapMonster Cloud'u yedek olarak tutabilir, sonuçları doğruladıktan sonra tamamen geçebilirsiniz.
CaptchaAI'ye geçin, birkaç dakikada çözmeye başlayın
API anahtarınızı captchaai.com üzerinden alın, temel URL'yi değiştirin ve ilk çözümünüzü test edin. Yeni bir kurulumdan başlıyorsanız aşağıdaki Hızlı Başlangıç rehberi tüm adımları anlatır.