Integrations

Retool + CaptchaAI: Dahili Araç CAPTCHA Form İşleme

Retool panelinizde bir formu engelleyen reCAPTCHA v2 için üç sorgu yeterlidir: görevi gönderen bir REST sorgusu, sonucu sorgulayan ikincisi ve ikisini bağlayan bir JavaScript sorgusu. Ek sunucu ya da tarayıcı otomasyonu yok; kurulum on dakika sürüyor.

Retool sorguları sunucu tarafında düz HTTP isteği atar, tarayıcı çalıştırmaz. Doğrulamayı bu yüzden CaptchaAI tarafında çözer, dönen token'ı isteğin gövdesine g-recaptcha-response alanı olarak yazarsınız.

Kurulumun beş parçası

Altı adımda toplam beş nesne kuruyorsunuz:

Parça Retool karşılığı İşi
Kaynak REST API resource https://ocr.captchaai.com adresini tutar
submitCaptcha REST sorgusu Görevi /in.php uç noktasına gönderir
pollResult REST sorgusu /res.php üzerinden sonucu sorgular
solveCaptcha JavaScript sorgusu Sorgulama döngüsünü yönetir
submitForm REST sorgusu Token'ı hedef forma iletir

API anahtarı sorgu tanımına yazılmaz; Secrets Store'da durur.

Adım 1: CaptchaAI'yi REST API kaynağı olarak tanımlayın

Retool'da Resources → Create New → REST API yolunu izleyin:

Alan Değer
İsim CaptchaAI
Temel URL https://ocr.captchaai.com
Kimlik doğrulama Yok; anahtar sorgu parametresiyle gider

Kaydedin; iki REST sorgusu da buna bağlanır.

Adım 2: Gönderim sorgusunu (submitCaptcha) oluşturun

Ayar Değer
Kaynak CaptchaAI
Eylem türü GET
URL yolu /in.php

Sorgu parametreleri:

Anahtar Değer
key {{secretsStore.CAPTCHAAI_API_KEY}}
method userrecaptcha
googlekey {{sitekeyInput.value}}
pageurl {{pageurlInput.value}}
json 1

json parametresi eksikse yanıt düz metin döner, data.status kontrolü sessizce boşa düşer.

Transformer (isteğe bağlı):

// Parse the response
const data = {{ submitCaptcha.data }};
if (data.status === 1) {
  return { taskId: data.request, status: 'submitted' };
}
return { error: data.request, status: 'failed' };

Adım 3: Sorgulama sorgusunu (pollResult) oluşturun

Ayar Değer
Kaynak CaptchaAI
Eylem türü GET
URL yolu /res.php

Sorgu parametreleri:

Anahtar Değer
key {{secretsStore.CAPTCHAAI_API_KEY}}
action get
id {{submitCaptcha.data.request}}
json 1

CAPCHA_NOT_READY bir hata değil, "sonuç henüz hazır değil" yanıtıdır; yazımdaki eksik harf API sözleşmesinin parçası.

Transformer:

const data = {{ pollResult.data }};
if (data.status === 1) {
  return { token: data.request, status: 'solved' };
}
if (data.request === 'CAPCHA_NOT_READY') {
  return { status: 'pending' };
}
return { error: data.request, status: 'error' };

Adım 4: Sorgulama döngüsünü JavaScript sorgusuyla kurun

solveCaptcha adında bir JavaScript sorgusu ekleyin: ilk sorgulamadan önce 15 saniye bekler, ardından 5 saniyelik aralıklarla en fazla 20 kez sonucu sorgular.

// solveCaptcha — JavaScript Query
async function solve() {
  // Submit the CAPTCHA task
  await submitCaptcha.trigger();
  const submitResult = submitCaptcha.data;

  if (submitResult.status !== 1) {
    return { error: submitResult.request, status: 'submit_failed' };
  }

  const taskId = submitResult.request;

  // Wait 15 seconds before first poll
  await new Promise(r => setTimeout(r, 15000));

  // Poll up to 20 times (100 seconds max)
  for (let i = 0; i < 20; i++) {
    await pollResult.trigger({
      additionalScope: { taskId: taskId }
    });

    const result = pollResult.data;

    if (result.status === 1) {
      return { token: result.request, status: 'solved' };
    }

    if (result.request !== 'CAPCHA_NOT_READY') {
      return { error: result.request, status: 'error' };
    }

    // Wait 5 seconds before next poll
    await new Promise(r => setTimeout(r, 5000));
  }

  return { error: 'Polling timeout', status: 'timeout' };
}

return solve();

Zamanlama, Retool'un JavaScript sorgularına koyduğu 120 saniyelik sınıra göre seçilmiştir; aralığı 2 saniyeye indirmek yalnızca boş istek üretir.

Adım 5: Arayüzü kurun

Altı bileşen yeterli:

Bileşen Ad ya da bağlama Görevi
Text Input sitekeyInput Sitekey değerini alır
Text Input pageurlInput Sayfa adresini alır
Button onClick → solveCaptcha.trigger() Çözümü başlatır
Loading Indicator {{ solveCaptcha.isFetching }} Çözüm sürerken görünür
Text Area {{ solveCaptcha.data?.token \|\| '' }} Token'ı salt okunur gösterir
Durum rozeti {{ solveCaptcha.data?.status }} Başarıyı ya da hatayı işaretler

Adım 6: Token'ı gönderim sorgusuna bağlayın

submitForm adında yeni bir sorgu oluşturun:

Ayar Değer
Kaynak Hedef API'niz
Eylem türü POST
Gövde (Body) g-recaptcha-response: {{solveCaptcha.data.token}} alanını içeren form verisi

Sorguyu, yalnızca {{ solveCaptcha.data?.status === 'solved' }} koşulunda etkinleşen "Formu gönder" düğmesine bağlayın. Token kısa ömürlüdür; hemen göndermek "token geçersiz" hatalarının çoğunu baştan keser.

Panelin günlük hayattaki karşılığı

İstanbul'daki bir e-ticaret ekibi tedarikçi portallarına her gün onlarca form gönderiyor. Panel Retool'da yazılı; tek darboğaz, her gönderimde birinin ekran başında beklediği reCAPTCHA v2 doğrulaması. Akış kurulunca operatöre yalnızca "Formu gönder" düğmesi kalıyor.

Panel kişisel veri taşıyorsa akış KVKK kapsamındadır: yalnızca yetkili olduğunuz portallarda, kurumun kendi hesabıyla çalışın. CAPTCHA çözümü erişim yetkisinin yerini tutmaz.

Eşzamanlılık: kaç panel, kaç thread?

CaptchaAI çözüm başına değil eşzamanlı thread sayısına göre faturalandırır; bir thread, aynı anda çözülen bir CAPTCHA demektir:

  • Tek operatörlü bir panel için BASIC ($15/ay, 5 thread) yeterlidir.
  • Aynı anda gönderim yapan beş-on kişilik ekipler için STANDARD ($30/ay, 15 thread).
  • Gece çalışan zamanlanmış işler yüzlerce görevi kuyruğa alıyorsa ADVANCE ($90/ay, 50 thread).

Fiyatlar USD üzerinden sabittir; aylık gider öngörülebilir kalır.

Sorun giderme

Sorun Neden Çözüm
ERROR_WRONG_USER_KEY Anahtar yok ya da yanlış Settings → Secrets değerini doğrulayın
Yanıt JSON yerine düz metin json=1 parametresi eksik Sorgu parametrelerine json: 1 ekleyin
Sorgulama zaman aşımına uğruyor Çözüm uzun sürüyor Yineleme sayısını 20'den 30'a çıkarın
submitCaptcha.data tanımsız Gönderim sorgusu çalışmadı Önce gönderim sorgusunu tetikleyin
JavaScript sorgusu 120 saniyede kesiliyor Retool'un JS sorgu sınırı 5 saniyelik aralıkla 20 yinelemeye inin
Token yazılıyor, form reddediyor Süre doldu veya pageurl yanlış pageurl değerini form adresiyle eşleyin

SSS

Çözülen token ne kadar süre geçerli kalır?

reCAPTCHA v2 token'ları kısa ömürlü ve tek kullanımlıktır; pratikte yaklaşık iki dakikalık bir pencereniz olur. Token'ı bekletmeyin, submitForm sorgusunu hemen tetikleyin.

Aynı anda kaç gönderim işleyebilirim?

Eşzamanlı çözüm sayısı planınızdaki thread sayısına eşittir: BASIC ($15/ay) beş, STANDARD ($30/ay) on beş. Kuyruktaki görev sayısı thread sayısını sürekli aşıyorsa bir üst plana çıkın.

Aynı sorgu iskeletini Turnstile için de kullanabilir miyim?

Evet. submitCaptcha sorgusunda method değerini turnstile yapın; döngü ve arayüz aynen kalır, yalnızca token'ı yazdığınız form alanının adı değişir.

Retool üzerinden hangi CAPTCHA türlerini çözebilirim?

reCAPTCHA v2 ve v3 (Enterprise dahil), Cloudflare Turnstile, Cloudflare doğrulama akışı, GeeTest v3, görsel ve grid CAPTCHA'lar, BLS; ayrıca CaptchaFox (beta), Friendly Captcha (beta) ve Lemin (beta). hCaptcha ve FunCaptcha desteklenmiyor; GeeTest v4 ise "çok yakında" listesinde.

İlgili Makaleler

Sonraki Adımlar

Panelinize CAPTCHA çözümü eklemek on dakikalık bir iş — CaptchaAI API anahtarınızı alın ve REST kaynağını tanımlayın.

İlgili kılavuzlar:

Bu makale için yorumlar devre dışı bırakılmıştır.