API başvurusu
Eşzamanlı görev sınırı ve otomatik duraklatma
Bu sayfa Çince sürümden makine çevirisiyle hazırlanmıştır ve hatalar içerebilir. Geçerli olan Çince sürüm sürümüdür.
Tüm kullanıcılar için tanıma hızını korumak amacıyla YesCaptcha’da üç koruma kuralı vardır: hesap başına aynı anda işlenen görev sayısı sınırlanır (eşzamanlı görev sınırı); kısa sürede çok fazla hata üreten bir clientKey birkaç dakika duraklatılır (otomatik duraklatma); geçersiz olduğu belirlenmiş parametreler için bir süre boyunca aynı hata doğrudan döndürülür (geçersiz parametre önbelleği). Bu üç durumda da puan düşülmez.
Eşzamanlı görev sınırı
Bölüm başlığı “Eşzamanlı görev sınırı”Aynı anda işlenen görev sayısını hesap ve görev türü bazında sınırlıyoruz. Sınırlanan şey eşzamanlı görev sayısıdır, dakikadaki istek sayısı değildir.
- Bir görev,
createTaskçağrısını yaptığınız andan bu çağrı dönene kadar “işleniyor” sayılır. Görsel tanıma türleri sonucu doğrudancreateTaskiçinde döndürdüğü için eşzamanlı görev sayısı ≈ saniyede gönderilen görev sayısı × görev başına süre. Örneğin görev başına 0.5 saniye ve saniyede 40 görev gönderildiğinde eşzamanlı görev sayısı yaklaşık 20 olur. - Aynı hesaptaki istekler birlikte hesaplanır; her görev türü kendi başına hesaplanır.
- Limiti aşan istekler hemen
ERROR_THREADS_MAXIMUMdöndürür; yanıttakilimitmevcut üst sınırınızdır. Puan düşülmez ve otomatik duraklatmaya sayılmaz. - Tanıma sunucuları yoğun olduğunda, en çok tanıma süresi kullanan hesabın o görev türündeki sınırı geçici olarak yarıya düşer ve 10 dakika sonra otomatik olarak eski haline döner. Bu yalnızca hız sınırlamasıdır, hesap duraklatılmaz.
- Daha yüksek bir limit gerekiyorsa Destek ile iletişime geçin. Her türün varsayılan limiti belirlendiğinde bu sayfada ve Hizmet güncellemeleri sayfasında duyurulacaktır.
{ "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}(Örnekteki sayı yalnızca örnek amaçlıdır.)
Önerilen yöntem
Bölüm başlığı “Önerilen yöntem”- Yalnızca saniyedeki gönderimi sınırlamak yerine, programınızda “aynı anda sonuç bekleyen istek sayısını” sınırlayın; örneğin semafor (Semaphore) veya sabit boyutlu bir thread havuzu kullanın.
ERROR_THREADS_MAXIMUMaldığınızda, gönderilmiş isteklerin dönmesini bekleyip yeni istek gönderin ya da 1-2 saniye bekleyip tekrar deneyin; döngüyle hemen yeniden denemeyin.- Toplu görevleri düzenli aralıklarla gönderin; binlerce görevi aynı anda göndermeyin.
Python (asyncio) örneği:
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 resultOtomatik duraklatma
Bölüm başlığı “Otomatik duraklatma”Aynı clientKey kısa sürede çok sayıda hatalı istek ürettiğinde görev oluşturması otomatik olarak duraklatılır:
| Tetikleyici | Duraklatma süresi |
|---|---|
| Aynı takvim dakikası içinde aşağıda listelenen hatalardan toplam 100 tane | 5 dakika |
ERROR_IMAGE_TYPE_NOT_SUPPORTED hatasının 1 kez görülmesi |
30 dakika |
| Aynı takvim dakikası içinde “geçersiz parametre önbelleği”ne 1,000 kez takılma | 5 dakika |
Duraklatmaya sayılan hatalar:
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
Hesabın eşzamanlı görev sınırı aşıldığında dönen ERROR_THREADS_MAXIMUM (limit alanıyla birlikte) sayılmaz; tanıma hizmeti yoğun olduğunda dönen aynı adlı hata (limit alanı olmadan) sayılır. Tanıma hatası (ERROR_CAPTCHA_UNSOLVABLE), yetersiz bakiye (ERROR_ZERO_BALANCE), eksik alan (ERROR_REQUIRED_FIELDS), desteklenmeyen soru (ERROR_UNKNOWN_QUESTION) gibi hatalar sayılmaz.
Duraklatma sırasında:
- Yalnızca
createTaskvegetBalanceetkilenir veERROR_IP_BLOCKED_5MINdöndürür.getTaskResultetkilenmez; duraklatmadan önce oluşturulan görevlerin sonuçları normal şekilde sorgulanabilir. - Yanıtta
retryAfter(kalan saniye),blockReason(duraklatmayı tetikleyen hata kodu) veblockDetail(o isteklerin türü, URL’si, sitekey değeri) bulunur; programınızı bunlara göre düzeltin. - İstek göndermeye devam etmek duraklatma süresini uzatmaz. Süre dolunca otomatik olarak kaldırılır, Destek ile iletişime geçmeniz gerekmez.
- yescaptcha.com Panel’indeki genel bakış sayfasında son 24 saatteki duraklatma kayıtlarını görebilirsiniz.
{ "errorId": 1, "errorCode": "ERROR_IP_BLOCKED_5MIN", "errorDescription": "...", "retryAfter": 182, "blockReason": "ERROR_TASK_NOT_SUPPORTED"}Geçersiz parametre önbelleği
Bölüm başlığı “Geçersiz parametre önbelleği”Bazı hatalar istek parametrelerinden kaynaklanır ve aynı parametrelerle yeniden göndermek sonucu değiştirmez:
ERROR_RECAPTCHA_INVALID_SITEKEYERROR_RECAPTCHA_INVALID_DOMAINERROR_INVALID_KEY_TYPEERROR_DOMAIN_NOT_ALLOWED
Bu hatalar otomatik duraklatmaya sayılmaz; bunun yerine tüm sitede önbelleğe alınır: ilk tespitten sonra 2 dakika, 1 saat içinde tekrar doğrulanırsa 10 dakika boyunca. Önbellek süresi içinde aynı istekler (aynı görev türü ve websiteKey, ya da aynı site alan adı) doğrudan asıl hatayı döndürür, puan düşülmez ve yanıtta "cached": true, retryAfter (önbellekte kalan saniye) ile badRequest (eşleşen parametreler) bulunur. websiteKey değerini düzeltmek veya görev türünü değiştirmek hemen etkili olur.
Eşzamanlı görev sınırı ile otomatik duraklatma arasındaki fark
Bölüm başlığı “Eşzamanlı görev sınırı ile otomatik duraklatma arasındaki fark”| Eşzamanlı görev sınırı | Otomatik duraklatma | |
|---|---|---|
| Neden | Aynı anda işlenen görev çok fazla | Kısa sürede çok fazla hatalı istek |
| Sonuç | Yalnızca fazla olan istekler reddedilir, ERROR_THREADS_MAXIMUM |
Bu clientKey görev oluşturamaz, ERROR_IP_BLOCKED_5MIN |
| Düzelme | Bir istek tamamlanır tamamlanmaz yenisi gönderilebilir; yarıya düşen limit 10 dakika sonra eski haline döner | Süre dolunca otomatik olarak kalkar |
| Puan düşümü | Yok | Yok |