Explainers

CAPTCHA API Tedarikçi Kilitlenmesi: CaptchaAI Bunu Nasıl Önler?

CAPTCHA sağlayıcınızı değiştirmek beş dakikalık bir yapılandırma değişikliği mi, yoksa haftalar süren bir yeniden yazım projesi mi olur? Cevap tek bir şeye bağlı: entegrasyonunuzun altında yatan API biçimine. Standart bir in.php/res.php REST arayüzünde geçiş çoğu zaman temel URL'yi değiştirmekten ibarettir; tescilli bir SDK'ya ya da özel bir JSON-RPC şemasına bağlıysanız her çağrı sitesini yeniden yazarsınız. Tedarikçi kilitlenmesi kod düzeyinde başlar ve pazarlık gücünüzü doğrudan etkiler.

Kilitlenmenin gerçek maliyeti

Kilitlenme yalnızca kod değişikliği meselesi değildir; asıl fatura başka kalemlerde birikir:

  • Mühendislik zamanı: Entegrasyonları yeniden yazmak ve test etmek günler, bazen haftalar alır.
  • Üretim riski: Taşıma sırasında çıkan hatalar canlı ortamda kesintiye dönüşür.
  • Pazarlık gücü: Geçiş pahalıysa "başka sağlayıcıya geçeriz" diyerek fiyat konuşamazsınız.
  • İnovasyon gecikmesi: Rakip sağlayıcı daha iyi bir özellik çıkarsa bile mevcut sağlayıcının yol haritasına mahkûm kalırsınız.
  • Test yükü: Üretim kodunun yanında test paketlerini de baştan yazmanız gerekir.

Türkiye'deki ekipler için buna bir kalem daha eklenir: bu hizmetler USD üzerinden faturalandırılır. Kur oynaklığı altında, çıkış maliyeti yüksek bir sağlayıcıya kilitli kalmak bütçe planlamasını da öngörülemez hale getirir.

CAPTCHA API kilitlenmesini ne yaratır?

Kilitlenme tek bir sebepten değil, genelde üç kaynaktan doğar:

  • Tescilli API biçimleri: Benzersiz yöntem adları, iç içe geçmiş istek gövdeleri ve kendine özgü yanıt yapıları olan özel JSON-RPC veya SOAP arayüzleri. Böyle bir API'den çıkmak, her çağrıyı sıfırdan yazmak demektir.
  • Yalnızca SDK ile erişim: Sadece kendi SDK'sı üzerinden erişime izin veren sağlayıcılar kodunuzu, kendi sınıf hiyerarşilerine, yöntem adlarına ve sürüm döngülerine bağlar.
  • Standart dışı özellikler: Callback biçimleri, görev meta verileri ve raporlama uç noktaları standart olmayan yapılar kullandığında izleme ve hata yönetiminiz tek sağlayıcıya bağlanır.

En büyük risk API biçimidir. Aşağıdaki tablo, bir sağlayıcıyı değerlendirirken düşük ve yüksek riskli sinyalleri karşılaştırır:

Kilitlenme faktörü Düşük risk Yüksek risk
API biçimi in.php/res.php (standart) Özel JSON-RPC, SOAP/WSDL
Kimlik doğrulama Tek API anahtarı Kullanıcı adı + şifre + oturum token'ları
Yanıt biçimi {"status": 1, "request": "..."} Özel, iç içe geçmiş nesneler
Hata kodları Standart dize kodları Sağlayıcıya özgü anlamları olan sayısal kodlar
SDK bağımlılığı İsteğe bağlı sarmalayıcı, altında standart HTTP Zorunlu SDK, ham API belgesi yok

CaptchaAI tedarikçi kilitlenmesini nasıl önler?

Standart in.php/res.php biçimi

CaptchaAI, birden çok sağlayıcının paylaştığı, yaygın olarak benimsenmiş in.php/res.php REST biçimini kullanır:

İşlem İstek
Gönderme form kodlu parametrelerle POST /in.php
Sorgulama GET /res.php?action=get&id=TASK_ID
Bakiye GET /res.php?action=getbalance
Raporlama GET /res.php?action=reportbad&id=TASK_ID

Bu biçim sektörde birden fazla büyük servis tarafından kullanılır. Dolayısıyla CaptchaAI için yazdığınız kod, yalnızca temel URL'yi değiştirerek başka bir sağlayıcıyla da çalışır.

Sağlayıcılar arası ortak parametreler

Parametre Amaç Sağlayıcılar arası standart
key API kimlik doğrulaması Evet
method CAPTCHA türü tanımlayıcısı Evet
googlekey reCAPTCHA site anahtarı Evet
sitekey Turnstile / hCaptcha site anahtarı Evet
pageurl Hedef sayfa URL'si Evet
proxy Proxy dizesi Evet
json JSON yanıt biçimi bayrağı Evet

Zorunlu SDK yok

CaptchaAI herhangi bir dildeki standart HTTP kitaplıklarıyla çalışır — ister requests, ister axios veya cURL ile:

  • Kurmanız gereken tescilli bir SDK yok.
  • API değişikliklerinin gerisinde kalabilecek sağlayıcı paketlerine bağımlılık yok.

Taşınabilir CAPTCHA entegrasyonu desenleri

Standart bir API bile tek başına yetmez; uygulama mimariniz de kilitlenmeyi önlemelidir. Çözüm mantığınızı sağlayıcıdan bağımsız tutan üç desen şunlardır:

  • Soyutlama katmanı — ortak bir arayüz, sağlayıcıya göre uygulama
  • Yapılandırma odaklı seçim — sağlayıcı ayrıntıları config dosyasında
  • Ortam değişkeniyle geçiş — en basit kurulumlar için

Desen 1: Sağlayıcı soyutlama katmanı

Ortak bir arayüz tanımlayın ve her sağlayıcıyı bu arayüze göre uygulayın:

┌─────────────────┐
│ Your Application │
└───────┬─────────┘
        │
┌───────▼─────────┐
│ CaptchaSolver    │  ← Interface: solve(type, params) → solution
│ (abstraction)    │
└───┬─────────┬───┘
    │         │
┌───▼───┐ ┌──▼────┐
│ CAI   │ │ Other │  ← Implementations
└───────┘ └───────┘

Uygulamanız yalnızca solver.solve() çağırır; sağlayıcı değiştirmek iş mantığını yeniden yazmak değil, tek bir yapılandırma değerini değiştirmektir.

Desen 2: Yapılandırma odaklı sağlayıcı seçimi

Sağlayıcı ayrıntılarını koda değil yapılandırmaya koyun:

captcha:
  provider: captchaai
  providers:
    captchaai:
      submit_url: https://ocr.captchaai.com/in.php
      result_url: https://ocr.captchaai.com/res.php
      api_key: ${CAPTCHAAI_API_KEY}
    backup:
      submit_url: https://backup-provider.com/in.php
      result_url: https://backup-provider.com/res.php
      api_key: ${BACKUP_API_KEY}

Geçiş artık bir yapılandırma değişikliğidir; yeni bir kod dağıtımı gerekmez.

Desen 3: Ortam değişkeniyle geçiş

Daha basit kurulumlar için ortam değişkenleri yeterlidir:

# Switch by changing env vars
export CAPTCHA_SUBMIT_URL=https://ocr.captchaai.com/in.php
export CAPTCHA_RESULT_URL=https://ocr.captchaai.com/res.php
export CAPTCHA_API_KEY=your_key

Sağlayıcı değerlendirme kontrol listesi

Herhangi bir CAPTCHA sağlayıcısını incelerken şu soruları sorun:

İpucu: Bu tabloyu satın alma öncesi bir deneme hesabında test edin; belgelerinde "standart" görünen bir API pratikte özel davranabilir.

Soru Düşük kilitlenme Yüksek kilitlenme
API'yi standart HTTP ile çağırabiliyor muyum? Evet, form parametreli REST Hayır, kendi SDK'sı şart
Yanıt biçimi standart mı? status/request kalıbı Özel, iç içe geçmiş nesneler
Yalnızca URL'yi değiştirerek geçebiliyor muyum? Evet ya da neredeyse Hayır, kodu yeniden yazmak gerekir
Hata kodları belgeli ve standart mı? ERROR_ZERO_BALANCE gibi dize kodları Sayısal veya belgesiz kodlar
Proxy biçimi standart mı? user:pass@host:port Özel proxy nesnesi
Callback/webhook standart HTTP kullanıyor mu? URL'nize geri ping Özel olay sistemi

Kilitlenme ne zaman kabul edilebilir?

Her kilitlenme kötü değildir. Sağlayıcıya özgü bazı özellikler gerçek değer katar:

  • Özel kontrol panelleri ve ileri analitik
  • Ayrılmış destek kanalları

Önemli olan, bu ekstraları ayrı ve yalıtılmış entegrasyonlar üzerinden kullanırken çekirdek çözüm mantığınızı taşınabilir tutmaktır.

Sorun giderme

Sık karşılaşılan kilitlenme belirtileri ve çözümleri:

Sorun Nedeni Çözüm
Geçiş, tüm API çağrılarını yeniden yazmayı gerektiriyor Sağlayıcı SDK'sına sıkı bağımlılık Standart HTTP kullanan bir soyutlama katmanına geçin
Her sağlayıcıda farklı hata yönetimi Standart olmayan hata kodları Tüm sağlayıcı hatalarını iç hata türlerinize eşleyin
Yapılandırma kod tabanına dağılmış Sabit kodlanmış URL ve anahtarlar Sağlayıcı yapılandırmasını ortam değişkeni veya config dosyasında toplayın
Sağlayıcı değişince izleme bozuluyor Panolar sağlayıcıya özgü metriklere bağlı İzlemeyi kendi soyutlama katmanınızın metrikleri etrafında kurun

Sık sorulan sorular

Tedarikçi kilitlenmesi (vendor lock-in) tam olarak nedir?

Bir sağlayıcıdan ayrılmanın maliyetinin, o sağlayıcıda kalma maliyetini aşacak kadar yükselmesidir. CAPTCHA çözümünde başlıca üç tetikleyicisi vardır:

  • tescilli API biçimleri
  • zorunlu SDK'lar
  • standart dışı yanıt yapıları

in.php/res.php biçimi gerçekten standart mı?

Evet; bu REST kalıbı sektörde birden çok büyük çözüm servisi tarafından benimsenmiştir. Gönderme için in.php, sonucu sorgulamak için res.php kullanılır ve parametre adları sağlayıcılar arasında büyük ölçüde ortaktır. Bu yüzden CaptchaAI için yazılan kod taşınabilir kalır.

Sağlayıcımı değiştirirken planım veya bakiyem ne olur?

Fiyatlandırma da bir kilitlenme kaynağı olabilir. Taşınabilir bir mimaride geçiş sırasında çözüm kodunuzu değil, yalnızca kimlik bilgilerinizi ve temel URL'yi taşırsınız:

  • CaptchaAI thread tabanlı planlar sunar — örneğin BASIC ($15/ay, 5 thread).
  • Ücretler USD üzerinden işler; çözüm mantığınız sağlayıcıdan bağımsız kalır.

İlgili Makaleler

Sonraki Adımlar

Entegrasyonunuzu taşınabilir tutun — CaptchaAI'nin standart API'sini deneyin ve sağlayıcıyı tek bir URL değişikliğiyle değiştirin. İlgili kılavuzlar:

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