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.
Kendi ticketing platformunuz, etkinlikler yayına alınmadan önce kuyruk ve checkout için gerçekçi QA testlerine ihtiyaç duyar. Bu kılavuz, sahte etkinlikler, test koltukları ve simüle ödemelerle staging ortamınızdaki CAPTCHA entegrasyonunu nasıl test edeceğinizi gösterir — halka açık satışa veya üçüncü taraf platformlara dokunmadan.
Güvenli kapsam
- Yalnızca size ait veya yetkilendirilmiş ticketing platformları.
- Sahte etkinlikler, test koltukları, sahte biletler, test ödeme tokenları.
- Dahili kuyruk doğrulama ve QA endpoint doğrulama.
- Üçüncü taraf platform yok, üretim bilet satın alma yok.
- Üçüncü taraf ticketing platformları yok.
QA için dahili kuyruk modeli
Kuyruk mimarisini kopyalayın: QA kullanıcısı https://staging.example.com/ticketing/queue-test adresinde sahte kuyruğa girer, bir konum alır ve slot açıldığında https://staging.example.com/ticketing/checkout-test adresine yönlendirilir.
Sahte etkinlikler, koltuklar ve ödemeler
FAKE_EVENT = {
'id': 'evt_qa_001',
'url': 'https://staging.example.com/ticketing/fake-event',
'seats': [{'row': 'A', 'col': i, 'price_cents': 5000} for i in range(1, 21)],
}
FAKE_PAYMENT = {'token': 'qa_pm_token_demo'}
Staging ortamından CaptchaAI görevi gönderme
import os, requests, time
API_KEY = os.environ['CAPTCHAAI_API_KEY']
def solve_recaptcha_v2(sitekey, pageurl):
r = requests.post('https://ocr.captchaai.com/in.php', data={
'key': API_KEY, 'method': 'userrecaptcha',
'googlekey': sitekey, 'pageurl': pageurl, 'json': 1,
}).json()
tid = r['request']
while True:
time.sleep(5)
rr = requests.get('https://ocr.captchaai.com/res.php', params={
'key': API_KEY, 'action': 'get', 'id': tid, 'json': 1,
}).json()
if rr['status'] == 1:
return rr['request']
Sonucu QA backend'de doğrulama
Token'ı dahili QA bilet sipariş endpoint'inize gönderin. Backend CAPTCHA token'ını doğrular, sahte koltuğu kilitler ve simüle edilmiş bir sipariş kimliği döndürür. Hiçbir gerçek bilet işlenmez.
Loglama ve pass/fail kararları
Test başarılı sayılır: token backend tarafından kabul edilir, sahte koltuk kilitlenir ve uçtan uca gecikme dahili eşiğinizin altında kalır. Tüm değerleri 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.