Lingkup aman: Panduan ini berlaku hanya untuk lingkungan QA, staging, dan praproduksi milik sendiri atau yang Anda miliki otorisasinya. Materi membahas pola diagnostik, pengujian, dan observabilitas untuk integrasi CAPTCHA Anda sendiri — bukan untuk situs pihak ketiga atau alur tanpa otorisasi.
Panduan ini menjelaskan cara mengelola CAPTCHA selama pengujian otomatis di lingkungan QA Anda sendiri — bukan untuk mengekstrak data dari pihak ketiga.
Pola umum
Deteksi widget di staging Anda → kirim tugas ke CaptchaAI → tunggu token → validasi terhadap backend QA Anda.
Retry terkontrol
Gunakan backoff eksponensial dengan batas per kasus_qa. Catat setiap retry.
Trace
Tautkan setiap token ke kasus_qa yang mengonsumsinya, termasuk waktu submit dan validasi.
Pemecahan masalah
| Gejala | Tindakan yang disarankan |
|---|---|
| Tes tidak menemukan widget | Periksa selector dan timing pada staging Anda |
CaptchaAI mengembalikan ERROR_NO_SLOT_AVAILABLE |
Coba ulang dengan backoff pada pipeline internal |
| Backend QA menolak token | Bandingkan action/sitekey dengan konfigurasi sebenarnya |
Observabilitas
Catat log terstruktur untuk setiap eksekusi QA. Metrik yang dianjurkan: durasi total token, kode respons HTTP, ID tugas, dan kedalaman antrean. Pisahkan saluran log per lingkungan (development, staging, pra-produksi) dan korelasikan dengan distributed tracing (mis. OpenTelemetry) lewat correlation id. Kemampuan memutar ulang skenario penuh dari satu id biasanya memangkas waktu diagnosis insiden setidaknya separuh.
Checklist
- Cakupan pengujian dibatasi pada aplikasi sendiri atau sumber daya yang Anda miliki otorisasinya.
- Kunci CaptchaAI disimpan di secret manager CI atau vault, bukan di source code.
- Setiap eksekusi mencatat latensi dan kode status respons.
- Strategi retry idempoten dengan batas atas untuk error sementara.
- Pengujian dapat direproduksi di pipeline CI.
Contoh pemanggilan QA
Contoh Python berikut menunjukkan alur minimum untuk memvalidasi widget CAPTCHA pada lingkungan staging milik Anda sendiri lewat CaptchaAI.
import os
import time
import requests
API_KEY = os.environ['CAPTCHAAI_KEY']
QA_PAGE_URL = os.environ['QA_PAGE_URL'] # contoh: https://staging.example.com/qa-login
QA_SITE_KEY = os.environ['QA_SITE_KEY']
def submit_qa_recaptcha() -> str:
payload = {
'key': API_KEY,
'method': 'userrecaptcha',
'googlekey': QA_SITE_KEY,
'pageurl': QA_PAGE_URL,
'json': 1,
}
response = requests.post(
'https://ocr.captchaai.com/in.php',
data=payload,
timeout=30,
)
response.raise_for_status()
return response.json()['request']
def fetch_qa_result(task_id: str) -> dict:
params = {
'key': API_KEY,
'action': 'get',
'id': task_id,
'json': 1,
}
while True:
response = requests.get(
'https://ocr.captchaai.com/res.php',
params=params,
timeout=30,
)
response.raise_for_status()
data = response.json()
if data.get('request') != 'CAPCHA_NOT_READY':
return data
time.sleep(5)
FAQ
Apakah alur ini menyentuh trafik produksi?
Tidak. Semua contoh mengasumsikan domain QA milik sendiri seperti staging.example.com. Replikasi konfigurasi CAPTCHA produksi di salinan staging Anda untuk validasi.
Boleh menulis API key di source code?
Tidak boleh. Suntikkan lewat secret manager CI, environment variable, atau vault. Key yang sudah ter-commit harus dirotasi segera.
Strategi apa yang disarankan untuk error sementara?
Retry idempoten dengan exponential backoff (mis. 1s, 2s, 4s) dan batas atas. Error jaringan, respons 5xx, dan ERROR_NO_SLOT_AVAILABLE layak di-retry; error otorisasi yang persisten tidak boleh di-retry.
Panduan terkait yang aman
- Mulai cepat CaptchaAI
- QA CAPTCHA terotorisasi
- Pengujian endpoint CAPTCHA pada formulir sendiri
- Debug saat tes browser gagal padahal API berfungsi
- Menyelesaikan reCAPTCHA v2 dengan API
- Menyelesaikan Cloudflare Turnstile dengan API
- Menyelesaikan GeeTest v3 dengan API
Validasi integrasi CAPTCHA Anda di lingkungan sendiri dengan CaptchaAI.