Referensi API
Batas tugas bersamaan dan jeda otomatis
Halaman ini diterjemahkan otomatis dari versi bahasa Mandarin dan mungkin mengandung kesalahan. Versi bahasa Mandarin menjadi acuan utama.
Agar pengenalan tetap cepat bagi semua pengguna, YesCaptcha memiliki tiga aturan perlindungan: jumlah tugas yang sedang diproses bersamaan dibatasi per akun (batas tugas bersamaan); clientKey yang menghasilkan terlalu banyak error dalam waktu singkat akan dijeda beberapa menit (jeda otomatis); dan parameter yang sudah dinyatakan tidak valid langsung mengembalikan error yang sama selama beberapa waktu (cache parameter tidak valid). Ketiga kondisi ini tidak menyebabkan pemotongan poin.
Batas tugas bersamaan
Section titled “Batas tugas bersamaan”Kami membatasi jumlah tugas yang sedang diproses pada saat yang sama per akun dan per jenis tugas. Yang dibatasi adalah jumlah tugas bersamaan, bukan jumlah permintaan per menit.
- Tugas dihitung “sedang diproses” sejak
createTaskdipanggil sampai panggilan itu mengembalikan respons. Jenis pengenalan gambar mengembalikan hasil langsung dicreateTask, sehingga tugas bersamaan ≈ jumlah tugas yang dikirim per detik × durasi tiap tugas. Contoh: tiap tugas 0.5 detik dan 40 tugas dikirim per detik, maka tugas bersamaan sekitar 20. - Permintaan dari akun yang sama dihitung bersama; setiap jenis tugas dihitung sendiri-sendiri.
- Permintaan yang melebihi kuota langsung mengembalikan
ERROR_THREADS_MAXIMUM, danlimitdi respons adalah batas Anda saat ini. Tidak ada pemotongan poin, dan tidak dihitung untuk jeda otomatis. - Saat server pengenalan kewalahan, akun yang memakai waktu pengenalan terbanyak akan mengalami batas untuk jenis tugas tersebut dikurangi setengah sementara, lalu pulih otomatis setelah 10 menit. Ini hanya pembatasan kecepatan, akun tidak dijeda.
- Jika Anda membutuhkan kuota lebih tinggi, hubungi dukungan. Setelah kuota default tiap jenis ditetapkan, angkanya akan diumumkan di halaman ini dan di catatan pembaruan layanan.
{ "errorId": 1, "errorCode": "ERROR_THREADS_MAXIMUM", "errorDescription": "This account already has 30 tasks of this type in progress, which is the limit. Lower the concurrency and wait for pending requests to return before sending more; rejected requests are not charged and do not lead to a block.", "limit": 30}(Angka dalam contoh hanya ilustrasi.)
Cara yang disarankan
Section titled “Cara yang disarankan”- Batasi “jumlah permintaan yang menunggu hasil secara bersamaan” di program Anda, misalnya dengan semaphore atau thread pool berukuran tetap, bukan hanya mengatur berapa permintaan dikirim per detik.
- Setelah menerima
ERROR_THREADS_MAXIMUM, tunggu permintaan yang sudah dikirim selesai sebelum mengirim yang baru, atau tunggu 1 sampai 2 detik lalu coba lagi. Jangan mengulang dalam loop tanpa jeda. - Kirim tugas batch secara merata, jangan mengirim ribuan tugas sekaligus.
Contoh Python (asyncio):
import asyncioimport os
import aiohttp
CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"]LIMIT = 15 # below your concurrency limitsem = asyncio.Semaphore(LIMIT)
async def solve(session, task): async with sem: # at most LIMIT requests in progress at a time result = {} for attempt in range(5): async with session.post( "https://api.yescaptcha.com/createTask", json={"clientKey": CLIENT_KEY, "task": task}, ) as resp: result = await resp.json() if result.get("errorCode") != "ERROR_THREADS_MAXIMUM": return result await asyncio.sleep(1 + attempt) # over the limit: wait and retry return resultJeda otomatis
Section titled “Jeda otomatis”clientKey yang menghasilkan banyak permintaan error dalam waktu singkat akan dijeda dari pembuatan tugas secara otomatis:
| Pemicu | Durasi jeda |
|---|---|
| Error yang tercantum di bawah terkumpul 100 kali dalam satu menit kalender yang sama | 5 menit |
ERROR_IMAGE_TYPE_NOT_SUPPORTED muncul 1 kali |
30 menit |
| Mengenai “cache parameter tidak valid” 1,000 kali dalam satu menit kalender yang sama | 5 menit |
Error yang dihitung untuk jeda:
ERROR_REQUEST_FORMATSERROR_TASK_ABSENTERROR_TASK_NOT_SUPPORTEDERROR_KEY_DOES_NOT_EXISTERROR_KEY_EXPIREDERROR_TASKID_INVALIDERROR_SETTLEMENT_FAILEDERROR_HIGH_DEMAND_DOMAINERROR_ZERO_CAPTCHA_FILESIZEERROR_TOO_BIG_CAPTCHA_FILESIZEERROR_IMAGE_TYPE_NOT_SUPPORTEDERROR_ILLEGAL_IMAGE
ERROR_THREADS_MAXIMUM yang dikembalikan karena kelebihan tugas bersamaan di akun (dengan field limit) tidak dihitung; error dengan nama yang sama yang dikembalikan saat layanan pengenalan sibuk (tanpa limit) dihitung. Kegagalan pengenalan (ERROR_CAPTCHA_UNSOLVABLE), saldo tidak cukup (ERROR_ZERO_BALANCE), field yang kurang (ERROR_REQUIRED_FIELDS), pertanyaan yang tidak didukung (ERROR_UNKNOWN_QUESTION), dan sejenisnya tidak dihitung.
Selama jeda:
- Hanya
createTaskdangetBalanceyang terpengaruh, keduanya mengembalikanERROR_IP_BLOCKED_5MIN.getTaskResulttidak terpengaruh; tugas yang dibuat sebelum jeda tetap bisa diperiksa hasilnya. - Respons memuat
retryAfter(sisa detik),blockReason(kode error pemicu jeda), danblockDetail(jenis, URL, dan sitekey dari permintaan tersebut). Gunakan ketiganya untuk memperbaiki program Anda. - Terus mengirim permintaan tidak memperpanjang jeda. Jeda berakhir otomatis, tidak perlu menghubungi dukungan.
- Di Dasbor yescaptcha.com, halaman Ringkasan menampilkan catatan jeda 24 jam terakhir.
{ "errorId": 1, "errorCode": "ERROR_IP_BLOCKED_5MIN", "errorDescription": "...", "retryAfter": 182, "blockReason": "ERROR_TASK_NOT_SUPPORTED"}Cache parameter tidak valid
Section titled “Cache parameter tidak valid”Sebagian error ditentukan oleh parameter permintaan, sehingga mengirim ulang dengan parameter yang sama memberi hasil yang sama:
ERROR_RECAPTCHA_INVALID_SITEKEYERROR_RECAPTCHA_INVALID_DOMAINERROR_INVALID_KEY_TYPEERROR_DOMAIN_NOT_ALLOWED
Error ini tidak dihitung untuk jeda otomatis, tetapi di-cache di seluruh situs: 2 menit setelah penilaian pertama, dan 10 menit jika dikonfirmasi lagi dalam 1 jam. Selama cache berlaku, permintaan yang sama (jenis tugas dan websiteKey yang sama, atau domain situs yang sama) langsung mengembalikan error semula tanpa pemotongan poin, dengan "cached": true, retryAfter (sisa detik cache), dan badRequest (parameter yang terkena). Setelah websiteKey diperbaiki atau jenis tugas diganti, perubahan langsung berlaku.
Perbedaan batas tugas bersamaan dan jeda otomatis
Section titled “Perbedaan batas tugas bersamaan dan jeda otomatis”| Batas tugas bersamaan | Jeda otomatis | |
|---|---|---|
| Penyebab | Terlalu banyak tugas yang diproses bersamaan | Terlalu banyak permintaan error dalam waktu singkat |
| Dampak | Hanya permintaan yang berlebih yang ditolak, ERROR_THREADS_MAXIMUM |
clientKey ini dijeda dari pembuatan tugas, ERROR_IP_BLOCKED_5MIN |
| Pemulihan | Begitu ada permintaan selesai, Anda bisa mengirim yang baru; batas yang dikurangi setengah pulih setelah 10 menit | Pulih otomatis saat jeda berakhir |
| Pemotongan poin | Tidak ada | Tidak ada |