Güvenli kapsam: Bu kılavuz yalnızca size ait veya yetkilendirilmiş QA, staging ve ön üretim ortamları için geçerlidir. İçerik kendi CAPTCHA entegrasyonlarınız için tanılama, test ve gözlemlenebilirlik kalıplarını ele alır — üçüncü taraf siteleri veya yetkisiz akışları kapsamaz.
QA testleri birden fazla test hesabını veya farklı staging ortamlarını kapsadığında, izole edilmiş tarayıcı profilleri çerez kontaminasyonunu önler ve tekrarlanabilir bir durum sağlar. Bu kılavuz kendi QA'nızdaki profil yönetimine odaklanır — tanılama veya tanılama değil.
QA'da profilleri neden ayırmalısınız
- Bir test senaryosunun çerezlerinin diğerini etkilemesini önler.
- Her senaryoda test hesaplarını izole eder.
- CI'da tutarlı tarayıcı durumunu yeniden üretir.
- Farklı staging yapılandırmalarını ayırır.
Her profilde neler izole edilmeli
Çerezler, localStorage, sessionStorage, IndexedDB, service worker önbelleği ve geliştirici uzantıları. CAPTCHA da oturum durumundan etkilenir; bu nedenle temiz profiller test sonuçlarını tutarlı kılar.
QA profili durumuna örnek
from playwright.sync_api import sync_playwright
def run(profile_dir, qa_user):
with sync_playwright() as p:
ctx = p.chromium.launch_persistent_context(
user_data_dir=profile_dir, headless=True
)
page = ctx.new_page()
page.goto('https://staging.example.com/qa-form')
# ... CaptchaAI ile CAPTCHA doğrulama ...
ctx.storage_state(path=f'state-{qa_user}.json')
ctx.close()
CaptchaAI'yi dahili QA suite içinde kullanma
Her profil için CAPTCHA akışını çalıştırın: staging sayfanızda widget'ı tespit edin, in.php'ye gönderin, res.php'yi sorgulayın, token'ı QA backend endpoint'i üzerinden doğrulayın. Sonuçları profile_id ve qa_kasasi başına kaydedin.
Sorun giderme
| Sorun | Önerilen çözüm |
|---|---|
| Test widget'ı bulamıyor | Staging ortamınızdaki seçici ve zamanlamayı kontrol edin |
CaptchaAI ERROR_NO_SLOT_AVAILABLE döndürüyor |
Dahili pipeline'da geri çekilme ile yeniden deneyin |
| Backend QA token'ı reddediyor | Action/sitekey değerlerini gerçek yapılandırma ile karşılaştırın |
Gözlemlenebilirlik
Her QA çalıştırması için yapılandırılmış günlükler üretin. Toplam token süresi, HTTP yanıt kodu, görev kimliği ve kuyruk derinliği gibi ölçümler tablolarınızı ve uyarılarınızı besler. Ortamlarınızı (geliştirme, staging, ön üretim) ayrı kanallara yazın ve dağıtık izleme (örneğin OpenTelemetry) ile bağıntı kimliklerini eşleştirin. Tek bir kimlikten tüm senaryoyu yeniden oynatabilmek, olay sırasında tanılama süresini yarıya indirir.
Kontrol listesi
- Kapsam kesinlikle kendi uygulamalarınız veya yetkilendirilmiş kaynaklarla sınırlıdır.
- CaptchaAI anahtarı CI gizli deposunda veya kasada saklanır, kaynak kodda asla bulunmaz.
- Her çalıştırma için çağrı süresi ve yanıt kodu kayıt altına alınır.
- Geçici hatalar için idempotent yeniden deneme stratejisi kuruludur.
- Testler sürekli entegrasyon ortamınızdan tekrarlanabilir biçimde yeniden oynatılır.
Örnek QA çağrısı
Aşağıdaki Python örneği, kendi staging ortamınızdaki bir CAPTCHA widget'ını CaptchaAI üzerinden test etmek için kullanılan minimal akışı gösterir.
import os
import requests
API_KEY = os.environ['CAPTCHAAI_KEY']
QA_PAGE_URL = os.environ['QA_PAGE_URL'] # ör. https://staging.example.com/qa-login
QA_SITE_KEY = os.environ['QA_SITE_KEY']
def submit_qa_recaptcha() -> str:
payload = {
'clientKey': API_KEY,
'task': {
'type': 'NoCaptchaTaskProxyless',
'websiteURL': QA_PAGE_URL,
'websiteKey': QA_SITE_KEY,
},
}
response = requests.post(
'https://api.captchaai.com/createTask',
json=payload,
timeout=30,
)
response.raise_for_status()
return response.json()['taskId']
def fetch_qa_result(task_id: str) -> dict:
payload = {'clientKey': API_KEY, 'taskId': task_id}
response = requests.post(
'https://api.captchaai.com/getTaskResult',
json=payload,
timeout=30,
)
response.raise_for_status()
return response.json()
Sık sorulan sorular
Bu akış üretim trafiğine dokunur mu?
Hayır. Tüm örnekler staging.example.com veya kendi QA alan adınız gibi yetkilendirilmiş ortamları varsayar. Üretim CAPTCHA korumasını kendi staging kopyanızda yeniden üretin.
API anahtarımı kodda saklayabilir miyim?
Hayır. Anahtarı CI gizli yöneticisi, ortam değişkeni veya kasa hizmeti üzerinden enjekte edin. Kod tabanına işlenen anahtarlar derhal döndürülmelidir.
Geçici hatalar için ne öneriyorsunuz?
İdempotent yeniden deneme: üstel geri çekilme (örneğin 1s, 2s, 4s) ve üst sınır ile birlikte. Ağ hataları, 5xx yanıtları ve ERROR_NO_SLOT_AVAILABLE için yeniden deneme uygundur; kalıcı kimlik doğrulama hataları için değildir.
Güvenli ilgili kılavuzlar
- CaptchaAI hızlı başlangıç
- Yetkili CAPTCHA QA testleri
- Kendi formlarınızda CAPTCHA endpoint testleri
- Tarayıcı testi başarısız ama API başarılı: hata ayıklama
- reCAPTCHA v2 API ile çözme
- Cloudflare Turnstile API ile çözme
- GeeTest v3 API ile çözme
CAPTCHA entegrasyonunuzu kendi ortamınızda CaptchaAI ile doğrulayın.